[Java] 新生代和老年代垃圾回收策略
一、新生代:采用复制策略
Eden块,连个survival块
回收的时候,将Eden和当前使用的survival块当中的存活的对象转移到另一块survival当中,清空Eden和当前使用的survival块。
二 、老年代:标记移动算法
由于变化不是很大,而且大部分都是长期活着的对象或者大对象,所以使用新生代中的survival块无法全部容纳。这里使用标记移动的策略。
实际上,上面的两种策略对应了两种GC策略,minor GC 和 major GC。从参考[2]中知道,每一个对象都有一个年龄,每熬过一次minor GC,它的年龄加一,当达到了一定的限制,就会转换到老年代。这个阈值默认是15,可以设置。一般major GC都会对应一次minor GC。