常见的垃圾回收器_老年代
分代

  1. JDK诞生 Serial追随(单线程)
  2. 提高效率,诞生了PS(多线程并行)
  3. 为了配合CMS,诞生了PN,CMS是1.4版本后期引入,CMS是里程碑式的GC(并发),
    但是CMS毛病较多,因此目前任何一个JDK版本默认是CMS

年轻代

  1. Serial 年轻代 串行回收
  2. PS 年轻代 并行回收
  3. ParNew 年轻代 配合CMS的并行回收

老年代

  1. SerialOld
  2. ParallelOld
  3. CMS,垃圾回收和应用程序同时运行,降低STW的时间(200ms),但是会有碎片化的问题,碎片到达一定程度,CMS的老年代分配对象分配不下的时候,使用SerialOld 进行老年代回收

不分代

1.G1,1.8已经支持 G1了。G1(10ms) 算法:三色标记 + SATB
2. ZGC (1ms) PK C++ 算法:ColoredPointers + LoadBarrier
3. Shenandoah 算法:ColoredPointers + WriteBarrier
4. Eplison

垃圾收集器跟内存大小的关系

  1. Serial 几十兆
  2. PS 上百兆 - 几个G
  3. CMS - 20G
  4. G1 - 上百G
  5. ZGC - 4T - 16T(JDK13)

1.8默认的垃圾回收:PS + ParallelOld