4、GC Log
当我们想要根据GC日记来追查一些GC可能造成的卡立时,我们须要懂得GC日记的构成,不合信息代表了什么含义。
4.1 Dalvik GC日记
dalvik的日记格局根本如下:
- D/dalvikvm: <GC_Reason> <Amount_freed>, <Heap_stats>, <Pause_time>, <Total_time>
- gc_reason:就是我们上文提到的,是gc_alloc照样gc_concurrent,懂得到不合的原因便利我们做不合的处理。
- amount_freed:表示体系经由过程此次GC操作释放了若干内存
- Heap_stats:中会显示当前内存的余暇比例以及应用情况(晃荡对象所占内存 / 当前法度榜样总内存)
- Pause_time:表示此次GC操作导致应用法度榜样暂停的时光。关于这个暂停的时光,在2.3之前GC操作是不克不及并发进行的,也就是体系正在进行GC,那么竽暌功用法度榜样就只能壅塞住等待GC停止。而自2.3之后,GC操作改成了并发的方法进行,就是说GC的过程中不会影响到应用法度榜样的┞俘常运行,然则在GC操作的开端和停止的时刻会短暂壅塞一段时光,所以还有后续的一个total_time。
- Total_time : 表示本次GC所花费的总时光和膳绫擎的Pause_time,也就是stop all是不一样的,卡立时光重要看膳绫擎的pause_time。
Large Object Space就是一些离散地址的集合,用来分派一些大年夜对象大年夜而进步了GC的治理效力和整体机能,类似如下图:
3.1 Java堆
4.2 Art GC日记
- I/art: <GC_Reason> <Amount_freed>, <LOS_Space_Status>, <Heap_stats>, <Pause_time>, <Total_time>
根本情况和Dalvik没有什么差别,GC的Reason更多了,还多了一个OS_Space_Status
- LOS_Space_Status:Large Object Space,大年夜对象占用的空间,这部分内存并不是分派在堆上的,但仍属于应用法度榜样内存空间,重要用来治理 bitmap 等占内存大年夜的对象,避免因分派大年夜内存导致堆频繁 GC。
写在最后:图片来源自收集,特别鸣谢老罗。
推荐阅读
“互联网+”已深刻社会各范畴,有“综合工业之冠”的船舶业袈溱物联网、大年夜数据、云计算等技巧的影响下,传统基本举措措施和立异要素日益变更,行业生态体系和成长>>>详细阅读
本文标题:Android GC原理探究
地址:http://www.17bianji.com/lsqh/35313.html
1/2 1