JVM调优参数主要涉及堆内存、垃圾回收等,-Xms与-Xmx设相同值可避免扩展开销,-Xmn调整年轻代大小以减少Minor GC频率,-XX:NewRatio和-XX:SurvivorRatio优化代间比例;GC选择上,UseParallelGC适合吞吐场景,UseG1GC平衡停顿与吞吐,UseZGC适用于大堆低延迟需求。

常用的 JVM 调优参数主要围绕堆内存、垃圾回收、栈空间和运行时行为展开。合理设置这些参数可以提升应用性能、减少 GC 停顿、避免内存溢出等问题。
堆内存相关参数
控制 JVM 堆的大小是调优的基础,直接影响应用的内存使用和 GC 行为。
-
-Xms
:设置 JVM 启动时的初始堆大小,建议与 -Xmx 设置相同,避免动态扩展带来的性能损耗。例如:-Xms2g -
-Xmx
:设置最大堆内存大小,防止内存无限制增长。例如:-Xmx4g -
-Xmn
:设置年轻代大小,适当增大可减少 Minor GC 频率。例如:-Xmn1g -
-XX:NewRatio=
:设置年轻代与老年代的比例(如 2 表示老年代 : 年轻代 = 2:1) -
-XX:SurvivorRatio=
:设置 Eden 区与每个 Survivor 区的比例,默认 8 表示 Eden : S0 : S1 = 8:1:1
垃圾回收器选择
不同业务场景适合不同的 GC 策略,选择合适的回收器对延迟和吞吐量影响很大。
- -XX:+UseSerialGC:串行回收器,适用于单核环境或小型应用
- -XX:+UseParallelGC:并行回收器(吞吐量优先),适合后台批处理服务
- -XX:+UseConcMarkSweepGC:CMS 回收器(已废弃),低延迟场景曾常用
- -XX:+UseG1GC:G1 回收器,兼顾吞吐和停顿时间,现代应用推荐使用
- -XX:+UseZGC:ZGC,支持超大堆(TB 级),停顿时间极短(
- -XX:+UseShenandoahGC:Shenandoah,类似 ZGC,低延迟,Red Hat 主导
GC 行为与监控参数
用于优化 GC 细节行为和输出日志,便于分析性能问题。
- -XX:+PrintGC 或 -verbose:gc:输出 GC 基本信息
- -XX:+PrintGCDetails:输出详细的 GC 日志
- -XX:+PrintGCDateStamps:打印 GC 发生的时间戳
- -Xlog:gc*:file.log:JDK 9+ 推荐的日志方式,更灵活(替代旧参数)
-
-XX:MaxGCPauseMillis=
:G1 中设置期望的最大 GC 停顿时间目标 -
-XX:G1HeapRegionSize=
:设置 G1 的 Region 大小
栈与元空间参数
控制线程栈和类元数据的内存分配。
-
-Xss
:设置每个线程的栈大小,减少内存占用但过小可能引发 StackOverflowError -
-XX:MetaspaceSize=
:设置元空间初始大小,避免频繁触发元空间扩容 -
-XX:MaxMetaspaceSize=
:限制元空间最大值,防止元空间无限增长导致 OOM
基本上就这些常用参数。实际调优要结合应用类型(如高并发 Web 服务 vs 批处理)、堆大小、GC 日志和监控工具(如 JVisualVM、Arthas、Prometheus)综合分析。不复杂但容易忽略的是日志配置和回收器选型,这两个往往决定调优成败。







