JVM 垃圾收集器,种类
垃圾收集器 | 所属代:新生代、老年代 | 使用算法(新生代都使用复制算法) | 单线程 或 多线程 | 备注 |
---|---|---|---|---|
Serial | 新生代 | 标记-复制 | 单线程 | |
Serial Old | 老年代 | 标记-整理 | 单线程 | Serial Old 是 Serial 收集器的老年代版本 |
ParNew | 新生代 | 标记-复制 | 多线程 | ParNew 收集器是 Serial 收集器的多线程版本 |
Parallel Scavenge | 新生代 | 标记-复制 | 多线程 | 更关注吞吐量 |
Parallel Old | 老年代 | 标记-整理 | 多线程 | Parallel Old 是 Parallel Scavenge 收集器的老年代版本; 更关注吞吐量 |
CMS(Concurrent Mark Sweep) | 老年代 | 标记-清除 | 多线程 | |
Garbage First(简称 G1) | 标记-复制、标记-整理 | 与其他收集器一样,分代概念在 G1 中依然得以保留。 虽然 G1 可以不需要其他收集器配合,就能独立管理整个 GC 堆,但它能够采用不同的方式去处理新创建的对象和已经存活了一段时间、熬过多次 GC 的旧对象以获取更好的收集效果。 G1 将整个 Java 堆划分为多个大小相等的独立区域(Region),虽然还保留有新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,它们都是一部分 Region(不需要连续)的集合。 |
||
Shenandoah | ||||
ZGC(Z Garbage Collector) | 标记-整理 | |||
PGC(Pauseless GC) | ||||
C4(Concurrent Continuously Compacting Collector) |