---
title: "unity自身GC和.net的GC如何协调工作的"
author: "石心.Yong"
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/uwa-answer-unity-and-dotnet-garbage-collection/
type: note
content_role: source
source_type: "source"
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/05-游戏图形与运行时/我的UWA问答/2020-06-13 - unity自身GC和.net的GC如何协调工作的.md"
content_hash: 1d6651ae731bdecb0c43ff5994f33978ae7840cbccc06a80b50e2d2514079e85
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# unity自身GC和.net的GC如何协调工作的

> **note · 我的 UWA 问答**
> 本文收录我在 UWA 问答发表的公开回答。问题内容归原提问者；回答保留当时语境，技术结论可能受 Unity 版本、平台和项目条件限制。

## 问题

unity有自己的GC，.net也有自己的GC，两者在游戏运行的时候，是如何协调工作的？

- 提问者：徐冠
- 提问时间：2020-06-06 00:28:51

## 我的回答

提出这个问题之前，先要搞清楚一个问题: Unity与Mono和.NET三个概念之间的的关系

维基百科：

.NET框架（英語：.NET Framework）是由微软开发，一个致力于敏捷软件开发（agile software development）、快速应用开发（rapid application development）、平台无关性和网络透明化的软件框架。

嗯，.NET Framework是一个软件框架，可以理解为对一系列结构和功能的期待。不是一个具体的某个软件。 最初有一段时间，.NET框架只能在windows平台上运行。

.NET架构代码的编译运行过程如下：

![480pxOverview_of_the_Common_Language_Infrastructure.svg.png](/media/923654293893a7cf78a3.png)

Mono是.NET运行时和开发库的实现版本，为C#脚本提供一个编译器和运行的虚拟机（CLR）。Mono的初衷是：(1)使微软.NET应用可以跨平台运行 (2)支持.NET在Linux上使用。Mono比.NET Core支持更多的平台（如Linux, FreeBSD, Unix, Mac OS X和Solaris）。

Unity引擎对跨平台特性有很大的需求，于是使用Mono提供c#等符合CLI规范的脚本语言的运行环境。

直观的理解参考下图：

![.NET.png](/media/de4dba67a1bf3a63a36b.png)

![Unity.png](/media/bad4735cbcdbbba89933.png)

总的来说，Unity驱动Mono，为C#等提供编译和运行的环境。而C#等脚本的GC便是由Mono的虚拟机提供的。

因此，题主说的Unity自己的GC，和.NET的GC，应该是一回事，也就是Mono的GC。

（如有错误之处，希望大神指出）

Ref:

https://www.cnblogs.com/shanyou/p/4295163.html

https://www.cnblogs.com/zhujinghui/p/3369217.html

https://zh.wikipedia.org/wiki/.NET%E6%A1%86%E6%9E%B6

https://en.wikipedia.org/wiki/Mono_(software)

https://www.cnblogs.com/u3ddjw/p/10909975.html

https://www.cnblogs.com/u3ddjw/p/10909975.html

- 回答时间：2020-06-13 05:48:02
- 最后更新：2020-06-13 08:53:48
- 采纳状态：未采纳

## 来源与关系

- 上位集合：[我的 UWA 问答](https://www.pystone.net/notes/my-uwa-answers/)
- UWA 标签：内存管理
- 原始问题：[unity自身GC和.net的GC如何协调工作的](https://answer.uwa4d.com/question/5eda0243eab6db1f8238a372)
- 源页最后更新：2020-06-17 20:53:50
