返回「计算机、信息技术与工程」

unity自身GC和.net的GC如何协调工作的

更多
Markdown 结构化数据
本文目录 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架构代码的编译运行过程如下:

480pxOverview_of_the_Common_Language_Infrastructure.svg.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

Unity.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
  • 采纳状态:未采纳

来源与关系