分析Android log中的Memory GC
阿新 • • 發佈:2018-11-15
ART的 GC日誌格式
I/art: <GC_Reason> <GC_Name> <Objects_freed>(<Size_freed>) AllocSpace Objects, <Large_objects_freed>(<Large_object_size_freed>) <Heap_stats> LOS objects, <Pause_time(s)>
其中依次表示為:
- 垃圾回收原因
- 垃圾回收名稱
- 釋放的物件:此次GC從非大型物件空間回收的物件數量;
- 釋放的大小:此次GC從非大型物件空間
- 釋放的大型物件:此次GC收從大型物件空間回收的物件數量;
- 釋放的大型物件大小:此次GC從大型物件空間回收的位元組數量;
- 堆統計資料:空閒百分比與(活動物件數量)/(堆總大小)
- 暫停時間:常情況下,暫停時間與垃圾回收執行時修改的物件引用數量成正比。當前,ART CMS(Concurrent mark sweep) 垃圾回收僅在垃圾回收即將完成時暫停一次。移動的垃圾回收暫停時間較長,會在大部分垃圾回收期間持續出現。
Memory GC的分析
下載QTrace(http://www.qtrace.top)
執行QTrace.bat或者QTrace.sh, 匯入Android log.
在logcat頁面,單擊右鍵選單:指令碼 MemoryGC Chart, 得到 Memory GC的分析結果。
從圖表中,可以很方便發現那些Memory GC釋放了較多的記憶體。
同時也可以很方便的看到那些 Memory GC的 pause時間比較長,這對分析手機卡頓很有幫助。