Dalvik和ART的GC区别(转载)
小结笔记
Dalvik中GC的问题如下
- GC时挂起所有线程
- 大而连续的空间紧张
- 内存碎片化严重
ART
- 在ART中标记不需要挂起所有程序的线程:在ART中GC会要求程序在分配空间的时候标记自身的堆栈,这个过程非常短,不需要挂起所有程序的线程(解决问题1)
- 提供 LOS :large object space 专供Bitmap使用,从而提高了GC的管理效率和整体性能(解决问题2)
- ART里有moving collector来压缩活动对象,使得内存空间更加紧凑 (解决问题3)
Google在ART里对GC做了非常大的优化,从演示的数据里看,内存分配的效率提高了10倍,GC的效率提高了2-3倍。
- 通过标记时机的变更使中断和阻塞的时间更短;
- 通过LOS解决大对象的内存分配和存储问题;
- 通过moving collector来压缩内存,使内存空间更加紧凑,从而达到GC整体性能的巨大提升。
google官网:调试 ART 垃圾回收