最近在翻JAVA官方的一些文档。关于JAVA垃圾收集器GC的内容,是重点之一。
GC名称 | 中文名称 | 启用参数 | 特性 | 备注 |
Serial Collector | 串行收集器 | -XX:+UseSerialGC | 单线程垃圾回收 | |
Parallel Collector | 并行收集器 | -XX:+UseParallelGC | 多线程垃圾回收 | |
Garbage-First(G1) Garbage Collector | G1收集器 | -XX:+UseG1GC | 延迟可控垃圾回收 | |
The Z Garbage Collector | Z收集器 | -XX:+UseZGC | 低延迟垃圾回收 | 用于延迟敏感型 |
至于大家常提起的CMS,过渡阶段的产物,JDK9之后已经灰飞烟灭,就不提了。
另外额外说一句,别没事自己指定GC,除非你真的明白你在作甚。一般情况下,让JVM自己去选择GC方式,另外,即便是你自己指定了GC,在特定条件下也会退化,甚至最终退化为SGC。
引用下文档原文:“Unless your application has rather strict pause-time requirements, first run your application and allow the VM to select a collector.”
另外附一下JAVA官方文档地址:https://docs.oracle.com/en/java/javase/18/
部分可下载的语言以及JVM规格说明书等PDF文档地址:https://docs.oracle.com/javase/specs/index.html