直接运行 java -XX:+PrintCommandLineFlags -version,输出中带 +UseXXXGC 的参数即为当前 JVM 默认启用的垃圾收集器,如 -XX:+UseParallelGC 表示默认使用 Parallel GC;也可用 java -XX:+PrintFlagsFinal -version | grep -i "use.*gc" 查看所有 GC 开关及其默认值,其中 = true {default} 的即为实际默认 GC。

直接运行 java -XX:+PrintCommandLineFlags -version,输出中带 +UseXXXGC 的参数就是当前 JVM 默认启用的垃圾收集器。
用命令快速确认默认 GC
在终端执行:
java -XX:+PrintCommandLineFlags -version
输出类似:
-XX:+UseParallelGC java version "17.0.2" 2022-01-18 LTS
说明默认使用 Parallel GC(新生代 Parallel Scavenge + 老年代 Parallel Old)。
立即学习“Java免费学习笔记(深入)”;
其他常见标识:
-
-XX:+UseG1GC→ G1 收集器(JDK 9+ 默认) -
-XX:+UseSerialGC→ Serial 收集器(Client 模式或嵌入式场景) -
-XX:+UseZGC→ ZGC(需 JDK 11+ 显式启用)
查所有可用 GC 及默认项
列出 JVM 支持的所有 GC 开关及其默认值:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
java -XX:+PrintFlagsFinal -version | grep -i "use.*gc"
重点关注字段为 true 且以 Use 开头的项,例如:
bool UseG1GC = false {product} {default}
bool UseParallelGC = true {product} {default}
其中 = true 且标记 {default} 的,即为该 JDK 版本在当前运行环境下的默认 GC。
运行中进程怎么查?
对已启动的 Java 进程,用 jcmd 查其实际生效的启动参数:
- 先查 PID:
jps -l - 再查 GC 设置:
jcmd <pid> VM.flags | grep -i "use.*gc"
注意:如果没显式指定 GC 参数,JVM 会按版本和运行模式自动选择默认 GC,这个结果就反映真实行为。
辅助验证:看 GC 日志或 jstat 输出
若应用开启了 GC 日志(如 -Xlog:gc*),日志开头通常会打印使用的收集器名称,例如:
[0.025s][info][gc] Using G1
或者用 jstat -gc <pid> 观察列名特征:
- 含
EU、SU、GU、GCT→ 多为 G1 - 含
YGC、FGC、OC、OU→ 多为 Parallel 或 Serial - 含
ZGCCurrent、ZGCLive→ ZGC(JDK 11+)

















