
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
下面昆明达内小编跟大家说说Android GC原理探究,这对大家之后学Android开发培训会有一定的帮助,达内IT培训小编今天主要跟大家说的是JVM内存回收机制、Dalvik虚拟机、ART内存回收机制。
1、JVM内存回收机制
1.1回收算法
标记回收算法(Mark and Sweep GC)
从”GC Roots”集合开始,将内存整个遍历一次,保留所有可以被GC Roots直接或间接引用到的对象,而剩下的对象都当作垃圾对待并回收,这个算法需要中断进程内其它组件的执行并且可能产生内存碎片。
复制算法(Copying)
将现有的内存空间分为两快,每次只使用其中一块,在垃圾回收时将正在使用的内存中的存活对象复制到未被使用的内存块中,之后,昆明IT培训小编清除正在使用的内存块中的所有对象,交换两个内存的角色,完成垃圾回收。
标记-压缩算法(Mark-Compact)
先需要从根节点开始对所有可达对象做一次标记,但之后,它并不简单地清理未标记的对象,而是将所有的存活对象压缩到内存的一端。之后,清理边界外所有的空间。这种方法既避免了碎片的产生,又不需要两块相同的内存空间,因此,其性价比比较高。
分代
将所有的新建对象都放入称为年轻代的内存区域,年轻代的特点是对象会很快回收,因此,在年轻代就选择效率较高的复制算法。当一个对象经过几次回收后依然存活,对象就会被放入称为老生代的内存空间。对于新生代适用于复制算法,而对于老年代则采取标记-压缩算法。
1.2复制和标记-压缩算法的区别
2、Dalvik虚拟机
2.1 java堆
Java堆实际上是由一个Active堆和一个Zygote堆组成的,其中,昆明达内官网小编在Zygote堆用来管理Zygote进程在启动过程中预加载和创建的各种对象,而Active堆是在Zygote进程fork第一个子进程之前创建的。
2.2和GC有关的一些指标
2.3 GC的类型
2.4对象的分配和GC触发时机
2.5回收算法和内存碎片
3、ART内存回收机制
3.1 Java堆
ART运行时内部使用的Java堆的主要组成包括Image Space、Zygote Space、Allocation Space和Large Object Space四个Space,Image Space用来存在一些预加载的类,Zygote Space和Allocation Space与Dalvik虚拟机垃圾收集机制中的Zygote堆和Active堆的作用是一样的.
更多IT培训知识,详情请登陆昆明达内官网:http://km.tedu.cn