JVM垃圾收集策略与算法( 三 )


标记-整理算法(老年代)
标记:它的第一个阶段与标记/清除算法是一模一样的 , 均是遍历 GC Roots , 然后将存活的对象标记 。
整理:移动所有存活的对象 , 且按照内存地址次序依次排列 , 然后将末端内存地址以后的内存全部回收 。因此 , 第二阶段才称为整理阶段 。
这是一种老年代的垃圾收集算法 。老年代的对象一般寿命比较长 , 因此每次垃圾回收会有大量对象存活 , 如果采用复制算法 , 每次需要复制大量存活的对象 , 效率很低 。
分代收集算法
根据对象存活周期的不同 , 将内存划分为几块 。一般是把 Java 堆分为新生代和老年代 , 针对各个年代的特点采用最适当的收集算法 。
新生代:复制算法
老年代:标记-清除算法、标记-整理算法




推荐阅读