Xamarin.iOS在将C#编译为本机代码时对内存管理做了什么?

vla*_*mir 6 c# garbage-collection xamarin.ios

什么Xamarin.iOS关于内存管理?使用通常的IL,我们有垃圾收集器,它处理未使用的对象和浮雕程序员调用删除.当Xamarin将代码编译为本机时,这是如何工作的?谁清理了不再使用的物体?

这个问题回答了编译是如何工作的,但没有解释内存管理部分:MonoTouch如何工作?

cdh*_*wie 6

您寻求答案是在您链接的问题上给出的.

总而言之,IL-to-native翻译过程是提前完成的,但仍然需要Mono运行时的其他部分.JIT编译只是运行时执行的任务之一,而且这个特定的部分与iOS的内存限制不兼容(可写的内存页也不能​​执行,这是JIT运行所必需的).这就是AFAIK,是完全需要提前编译(AOT)的唯一原因.

Mono垃圾收集器确实在iOS上运行,它只是嵌入到Monotouch编译器生成的二进制文件中.生成的二进制文件包含您的AOT编译的应用程序代码以及您使用的库的AOT编译版本,以及Mono运行时的精简版本.