Android ART内存清理原理
Android现在主流的机器都是ART的虚拟机了
- gc的时候不会阻塞主线程
- 标记-清除算法
-
art的gc日志
image.png
Background sticky concurrent mark sweep GC freed 22904(1300KB) AllocSpace objects, 2(40KB) LOS objects, 22% free, 4MB/5MB, paused 7.857ms total 33.533ms
- 由原来的两次GC暂停减少为一次
- 以较少的GC时间回收最近分配的, 短命的对象.
- 可以查看分内内存的heap linux万物皆文件 cat /system/build.prop
可以设置LargeHeap - 问题是造成内存碎片化
内存优化方法
- 使用SparseArray在1000一下优化百分之30
- 使用ArrayMap在1000一下优化百分之10
- 减少频繁GC 减少对象创建次数view的ondraw方法
网友评论