6

Xamarin.iOS 对内存管理有什么作用?使用通常的 IL,我们有垃圾收集器,它负责处理未使用的对象并让程序员免于调用 delete。当 Xamarin 将代码编译为本机时,这是如何工作的?谁清理不再使用的物品?

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

4

1 回答 1

6

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

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

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

于 2013-04-09T16:15:32.020 回答