首先来说说Mono,Mono是
Xamarin公司开发的跨平台 .NET运行环境,是.NET框架的另一种实现。区别在于,它可以跨平台。(Unity的跨平台特性依赖于Mono)
再来看看
Mono的组成。
1.C#编译器。
最新的Momo版本(5.0+)c#编译器完全兼容c#4.0以上,我使用的是Unity3D,2017.3.1f1版本,它使用的是Mono2.0+版本,它的编译器(mcs)就不支持c#4.0以上。
2.Mono运行时
提供了JIT(即时编译器),AOT(提前编译器)两种编译器。
还有三种编译方式:JIT,AOT,Full-AOT(完全杜绝了JIT编译,主要是用于ios平台。)
还提供了类库加载器。
垃圾回收器:(之前说到,unity2017版本使用的是早期的Mono版本,所以使用的垃圾回收机制是贝姆垃圾回收,另一种机制(Mono2.8之后)是分代垃圾回收。所以与.net框架相比,性能要差不少。