【发布时间】:2013-04-09 16:11:58
【问题描述】:
Xamarin.iOS 对内存管理有什么作用?使用通常的 IL,我们有垃圾收集器,它负责处理未使用的对象并让程序员免于调用 delete。当 Xamarin 将代码编译为本机时,这是如何工作的?谁来清理不再使用的物品?
这个问题回答了编译是如何工作的,但没有解释内存管理部分:How MonoTouch works?
【问题讨论】:
标签: c# xamarin.ios garbage-collection
Xamarin.iOS 对内存管理有什么作用?使用通常的 IL,我们有垃圾收集器,它负责处理未使用的对象并让程序员免于调用 delete。当 Xamarin 将代码编译为本机时,这是如何工作的?谁来清理不再使用的物品?
这个问题回答了编译是如何工作的,但没有解释内存管理部分:How MonoTouch works?
【问题讨论】:
标签: c# xamarin.ios garbage-collection
answer you seek 是针对您链接的问题提供的。
总而言之,IL 到本机的翻译过程是提前完成的,但 Mono 运行时的其他部分仍然是必需的。 JIT 编译只是运行时执行的任务之一,这个特定的部分与 iOS 的内存限制不兼容(可写内存页也不能执行,这是 JIT 运行所必需的)。这是,AFAIK,完全需要提前 (AOT) 编译的唯一原因。
Mono 垃圾收集器确实可以在 iOS 上运行,它只是嵌入到 Monotouch 编译器生成的二进制文件中。生成的二进制文件包含您的 AOT 编译的应用程序代码以及您使用的库的 AOT 编译版本,以及 Mono 运行时的精简版本。
【讨论】: