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

fmms 12年前發布 | 9K 次閱讀 IOS

針對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垃圾回收器選項。

Via InfoQ

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!