unity自身GC和.net的GC如何协调工作的
本文目录 3 个章节
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架构代码的编译运行过程如下:

Mono是.NET运行时和开发库的实现版本,为C#脚本提供一个编译器和运行的虚拟机(CLR)。Mono的初衷是:(1)使微软.NET应用可以跨平台运行 (2)支持.NET在Linux上使用。Mono比.NET Core支持更多的平台(如Linux, FreeBSD, Unix, Mac OS X和Solaris)。
Unity引擎对跨平台特性有很大的需求,于是使用Mono提供c#等符合CLI规范的脚本语言的运行环境。
直观的理解参考下图:


总的来说,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 问答
- UWA 标签:内存管理
- 原始问题:unity自身GC和.net的GC如何协调工作的
- 源页最后更新:2020-06-17 20:53:50