1. 程式人生 > >分析Android log中的Memory GC

分析Android log中的Memory GC

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)>

其中依次表示為:

  1. 垃圾回收原因
  2. 垃圾回收名稱
  3. 釋放的物件:此次GC從非大型物件空間回收的物件數量;
  4. 釋放的大小:此次GC從非大型物件空間
    回收的位元組數量;
  5. 釋放的大型物件:此次GC收從大型物件空間回收的物件數量;
  6. 釋放的大型物件大小:此次GC從大型物件空間回收的位元組數量;
  7. 堆統計資料:空閒百分比與(活動物件數量)/(堆總大小)
  8. 暫停時間:常情況下,暫停時間與垃圾回收執行時修改的物件引用數量成正比。當前,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時間比較長,這對分析手機卡頓很有幫助。