JVM老年代垃圾收集器Serial Old和Parallel Old

JVM老年代垃圾收集器Serial Old和Parallel Old

Serial Old垃圾收集器

老年代垃圾收集器,与Serial一样,是一个单线程垃圾收集器,不同的是用的算法不一样(标记-整理)

JVM老年代垃圾收集器Serial Old和Parallel Old

根据老年代的特点,有人设计了标记-整理(Mark Compact)算法,标记过程和标记-清除算法一样,但是后续步骤不是直接对可回收对象进行清理,而是让存活对象向一端移动,然后清除掉边界以外的内存,如下图所示。

JVM老年代垃圾收集器Serial Old和Parallel Old

复制算法在对象存活比较高的老年代需要复制大量的对象,效率将会贬低,如果不想浪费50%的内存,就需要有额外的空间进行分配担保,以应对对象100%都存活的极端情况,所以老年代并不适用复制算法

复制收集算法在对象存活率较高时就要进行较多的复制操作,效率将会变低。更关键的是,如果不想浪费50%的空间,就需要有额外的空间进行分配担保,以应对被使用的内存中所有对象都100%存活的极端情况,所以在老年代一般不能直接选用这种算法。

Parallel Old

老年代收集器,是Parallel Scavenge老年代版本,用的算法是标记-整理,在JDK1.6提供,多线程收集

JVM老年代垃圾收集器Serial Old和Parallel Old

JVM老年代垃圾收集器Serial Old和Parallel Old