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

fmms 12年前
     <p>针对iOS的MonoTouch目前支持了分代式垃圾回收器(generational garbage collector)SGen。直到不久之前,Sgen还只是完整版本Mono中的一个实验性部分。伴随着垃圾回收器一同到来的,还有一个为iOS准备的 内存分析器(Memory Profiler),它可以从MonoDevelop集成开发环境中访问到。</p>    <p>分代式垃圾回收器Sgen取代了Mono中传统的<a href="/misc/goto?guid=4958330310377629866">Boehm垃圾回收器</a>。虽然Sgen预计会有更好的性能,但其保守式扫描仍然会给它带来一些阻碍。预计将来Sgen会切换到精确的堆栈标记系统,这样应当可以大幅度减少产生的内存碎片。</p>    <p><span style="color:#000000;">iOS</span>分析器支持两种模式,默认模式是堆分析模式,在该模式中内存快照可以根据需要或者触发器进行采集,而该触发器可以设置成一定数量的垃圾收集器周期或者基于时间的时间间隔。此外,该分析器还包含了一些标准工具,如对比快照和查找内存中的对象位置。</p>    <p>性能分析支持统计抽样,以及精确性虽佳但速度不足的进入/离开事件记录。统计抽样采集应用程序快照,并根据每个方法被采集器抓取的频度对它们的速度 进行评估。从字面上看,进入/离开事件记录就是在函数每次开始或完成时记录一条日志。它虽然提供了时间花费的完整记录,但会带来严重的性能开销。这种模式 同样能够捕获与对象分配相关的堆栈跟踪。</p>    <p>MonoDevelop 2.8.5和MonoTouch 5.1.1都规定使用该工具。而对于个别项目,必须激活调试、分析和SGen垃圾回收器选项。</p>    <p>Via <a href="/misc/goto?guid=4958330311199172866" target="_blank">InfoQ</a></p>