老年代垃圾回收器

image.png

  1. 工作线程:拼命地产生对象,对象存于eden区。
  2. 年轻代垃圾回收器:年轻代满了,触发ygc,把存活对象复制到old区。
  3. 老年代垃圾回收器:先把所有工作线程挂起,所有工作线程进入安全点SafePoint后,当前处于STW状态。
  4. gc线程:

先说下年轻代的回收,它把年轻代的垃圾复制到老年代,复制完后,再清空年轻代。
也采用复制算法?如果采用复制算法,那复制到哪里呢?是不是没地方复制了?那怎么办呢?
那就只能就地解决了,即采用标记整理算法。先标记,后整理

Serial Old老年代垃圾回收器

Serial Old是Serial收集器的老年代版本。
特点:

  1. 分代:老年代
  2. 工作方式:单线程串行回收
  3. 算法:标记整理算法
  4. 性能分析:停顿时间短(响应速度快)

应用场景:
单CPU单核的环境下,适用于Client模式下的年轻代收集器。

Parallel Old老年代垃圾回收器

Parallel Old它是Parallel收集器的老年代版
特点:

  1. 分代:老年代,
  2. 工作方式:多线程并行独占式回收
  3. 算法:标记-整理算法
  4. 性能设计:高吞吐量
  5. jdk8默认垃圾收集器。

应用场景:
高吞吐量适用于多核多CPU的环境下,服务端的高并发(例如,互联网微服务)的老年代收集器
使用参数:
-XX:+UseParallelOldGC,表示老年代为Parallel Old收集器。
-XX:ParallelGCThreads,表示设置gc线程数量,默认CPU核数。