老年代垃圾收集器,与Serial同样,是一个单线程垃圾收集器,不一样的是用的算法不同(标记-整理)
根据老年代的特色,有人设计了标记-整理(Mark Compact)
算法,标记过程和标记-清除
算法同样,可是后续步骤不是直接对可回收对象进行清理,而是让存活对象向一端移动,而后清除掉边界之外的内存,以下图所示。算法
复制算法
在对象存活比较高的老年代须要复制大量的对象,效率将会贬低,若是不想浪费50%的内存,就须要有额外的空间进行分配担保,以应对对象100%都存活的极端状况,因此老年代并不适用复制算法
。多线程
复制收集算法在对象存活率较高时就要进行较多的复制操做,效率将会变低。更关键的是,若是不想浪费50%的空间,就须要有额外的空间进行分配担保,以应对被使用的内存中全部对象都100%存活的极端状况,因此在老年代通常不能直接选用这种算法。
老年代收集器,是Parallel Scavenge老年代版本,用的算法是
标记-整理
,在JDK1.6提供,多线程收集