分析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时间比较长,这对分析手机卡顿很有帮助。

猜你喜欢

转载自blog.csdn.net/tclswd3/article/details/82848327