分析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)>
其中依次表示为:
- 垃圾回收原因
- 垃圾回收名称
- 释放的对象:此次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时间比较长,这对分析手机卡顿很有帮助。