JVM垃圾回收算法

1.标记-清除算法
标记:遍历所有的GC Roots 然后将所有可达对象标记为存活对象;
清除:遍历堆中的所有对象,然后将没有标记的对象清除。
2.标记整理算法
标记:遍历所有的GC Roots 然后将所有可达对象标记为存活对象;
整理:移动所有存活的对象,且按照内存地址次序依次排列,然后将末端内存地址以后的内存全部回收。
3.复制算法
将原有的内存空间一分为二,每次只用其中的一块,在垃圾回收时,将正在使用的对象复制到另外一个内存空间中,然后将该内存空间清空,交换两个内存的角色,完成垃圾回收。
4.分代算法
年轻代-老年代-元数据区(之前永久代)
1个Eden区和2个Survivor区(分别叫from和to)默认比例为8:1:1,一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次GC后,如果仍然存活,将会被移到Survivor区。在Survivor区中每熬过一次Minor GC,年龄就会增加1岁,当它的年龄增加到16时,就会被移动到老年代中。
 年轻代:复制算法
老年代: 标记整理算法

上一篇:我滴个鬼鬼,精选JVM垃圾回收机制全面分析,聊聊你眼中的JVM


下一篇:12 - 垃圾回收(下)