get started

参考:

HotSpot JVM 启动结构

java [options] classname [args]
java [options] -jar filename [args]

JVM 可用垃圾收集器(Java 21)

Collector 特点 启用参数
Serial GC 单线程,适合小堆/客户端 -XX:+UseSerialGC
Parallel GC 多线程 stop‑the‑world -XX:+UseParallelGC
G1 GC (默认) 分代 GC,平衡延迟与吞吐 -XX:+UseG1GC
ZGC 极低停顿 (<1ms),支持大堆 -XX:+UseZGC
Shenandoah 低停顿 (<10ms),并发压缩 -XX:+UseShenandoahGC

说明:Java 21 默认 G1 为垃圾收集器;ZGC 有分代支持,提供更优新生代收集效果。

GC 日志参数(统一 Xlog 体系)

Java 9+ 统一使用 ‑Xlog:gc* 系列(更灵活替代 PrintGC 系列)。

参数 说明
-Xlog:gc 输出基本 GC 信息
-Xlog:gc+heap 显示堆内存变化
-Xlog:gc+pause 显示暂停时间
-Xlog:gc+ergo 显示 GC 人机调整(ergonomics)信息
-Xlog:gc*,safepoint 包含安全点信息
-Xlog:gc:file=<file>:<opts> 输出 GC 到文件(可加滚动等)

堆/内存大小设置

参数 说明
-Xms<size> 初始堆大小
-Xmx<size> 最大堆大小
-Xmn<size> 年轻代大小(某些 GC 有效)
-XX:MaxHeapFreeRatio=<percent> GC 后最大堆空闲保留率
-XX:MinHeapFreeRatio=<percent> GC 后最小堆空闲保留率
-XX:MaxDirectMemorySize=<size> 最大 DirectBuffer 大小
-XX:InitialCodeCacheSize=<size> Code Cache 初始大小
-XX:ReservedCodeCacheSize=<size> Code Cache 最大大小

常用 GC 通用参数(调优基础)

参数 说明
-XX:MaxGCPauseMillis=<ms> GC 目标最大停顿
-XX:GCTimeRatio=<ratio> GC 与应用时间比例目标
-XX:InitiatingHeapOccupancyPercent=<percent> 并发标记触发阈值(G1 类)
-XX:+DisableExplicitGC 禁用 System.gc()
-XX:+AlwaysPreTouch 启动时预热分配内存页
-XX:ParallelGCThreads=<n> 并行 GC 线程数
-XX:ConcGCThreads=<n> 并发 GC 线程数

G1 GC(默认)参数

G1 GC
每个 Region 可以属于年轻代或老年代,动态划分,没有固定的新生代老年代比例。
YoungGC
Mixed GC:并发标记老年代 + 年轻代
MixedGC
G1 GC过程

参数 说明
-XX:+UseG1GC 启用 G1 GC
-XX:G1HeapRegionSize=<size> G1 区块大小(1M–32M)
-XX:MaxGCPauseMillis=<ms> 目标最大停顿
-XX:InitiatingHeapOccupancyPercent=<percent> 并发标记触发点
-XX:G1ReservePercent=<percent> 堆预留空间百分比
-XX:G1HeapWastePercent=<percent> 判断浪费内存阈值
-XX:G1MixedGCCountTarget=<count> 混合 GC 次数目标
-XX:+UseStringDeduplication 对象字符串去重(可选)

G1 大多数参数无默认启用即可运行,但可通过这些参数微调停顿/混合 GC 行为。G1 不固定老年代大小,使用 Region 动态管理堆空间,提高回收灵活性。

-XX:MaxGCPauseMillis=<ms>是 目标值,不是硬限制,实际停顿可能超过;JVM 会自动调整 Region 大小和混合 GC 次数,尝试控制停顿。

ZGC 参数(Java 21)

ZGC内存布局
ZGC回收周期

参数 说明
-XX:+UseZGC 启用 ZGC
-XX:+ZGenerational 启用分代 ZGC(Java 21+)
-XX:SoftMaxHeapSize=<size> 可选,上限软堆大小
-XX:+ZUncommit 释放未使用内存回 OS
-XX:MaxGCPauseMillis=<ms> 低延迟目标
-XX:+DisableExplicitGC 禁显式 GC 调用

ZGC 设计上参数较少,因为它自动并发管理大多数行为。
理论上可设置目标停顿,但 ZGC 设计上停顿非常低(<10ms),几乎不依赖这个参数;低延迟堆管理自动完成,通常无需调优停顿

Shenandoah GC 参数

Shenandoah GC

参数 说明
-XX:+UseShenandoahGC 启用 Shenandoah
-XX:ShenandoahPauseTimeGoal=<ms> 停顿时间目标
-XX:ShenandoahGCThreads=<n> 并发收集线程数
-XX:ShenandoahHeapRegionSize=<size> 区域大小
-XX:ShenandoahGCMode=<mode> GC 模式(如 normal/iu/passive)

Shenandoah 中 GCMode 可控制标记策略等高级行为。

并发/分代调优参数

参数 说明
-XX:MaxTenuringThreshold=<age> 新生代晋升年龄阈值
-XX:SurvivorRatio=<ratio> Eden/Survivor 比率
-XX:NewRatio=<ratio> 老代/新生代比率
-XX:+UseAdaptiveSizePolicy 自适应分代大小调整

线程/栈配置

参数 说明
-Xss<size> 每线程栈大小
-XX:ThreadStackSize=<size> 线程栈配置
-XX:+UseTLAB 启用线程局部分配缓冲
-XX:TLABSize=<size> 分配缓冲初始大小

HotSpot 行为调整参数(通用)

参数 说明
-XX:ObjectAlignmentInBytes=<n> 对齐字节大小
-XX:-UseBiasedLocking 禁用偏向锁
-XX:-UseCompressedOops 关闭压缩指针

日志与调试

参数 说明
-XX:+PrintClassHistogramAfterFullGC Full GC 后类统计
-XX:+PrintHeapAtGC GC 时堆信息