iOS/MonoTouch有了新的垃圾回收器和内存分析器

针对iOS的MonoTouch目前支持了分代式垃圾回收器(generational garbage collector)SGen。直到不久之前,Sgen还只是完整版本Mono中的一个实验性部分。伴随着垃圾回收器一同到来的,还有一个为iOS准备的内存分析器(Memory Profiler),它可以从MonoDevelop集成开发环境中访问到。

分代式垃圾回收器Sgen取代了Mono中传统的 Boehm垃圾回收器。虽然Sgen预计会有更好的性能,但其保守式扫描仍然会给它带来一些阻碍。预计将来Sgen会切换到 精确的堆栈标记系统,这样应当可以大幅度减少产生的内存碎片。

iOS分析器支持两种模式,默认模式是堆分析模式,在该模式中内存快照可以根据需要或者触发器进行采集,而该触发器可以设置成一定数量的垃圾收集器周期或者基于时间的时间间隔。此外,该分析器还包含了一些标准工具,如对比快照和查找内存中的对象位置。

性能分析支持统计抽样,以及精确性虽佳但速度不足的进入/离开事件记录。统计抽样采集应用程序快照,并根据每个方法被采集器抓取的频度对它们的速度进行评估。从字面上看,进入/离开事件记录就是在函数每次开始或完成时记录一条日志。它虽然提供了时间花费的完整记录,但会带来严重的性能开销。这种模式同样能够捕获与对象分配相关的堆栈跟踪。

MonoDevelop 2.8.5和MonoTouch 5.1.1都规定使用该工具。而对于个别项目,必须激活调试、分析和SGen垃圾回收器选项。

查看英文原文: A New Garbage Collector and Memory Profiler for iOS/MonoTouch

相关厂商内容

QClub(广州站)——移动应用开发经验交流(2月25日 免费报名中!)

QClub(大连站)——移动应用开发之HTML5(2月25日 免费报名中!)

QClub(西安站)——前端崛起(2月25日 免费报名中!)

InfoQ读者见面会2月25日与您相约北京

Inedo合作伙伴Alex Papadimoulis谈代码之丑之美

你可能感兴趣的:(ios,monotouch,垃圾回收)