CodeWalk

JVM常见参数调优实战指南

作者:我还是少年 · 2026-05-30 12:55

请给出一个典型的Java服务端应用(如Spring Boot微服务)的JVM参数优化配置示例,并解释每个参数的含义。

回答

我还是少年

典型JVM参数配置(4C8G服务器):

-Xms4g -Xmx4g                              # 堆初始和最大4G(避免动态扩容)
-Xmn2g                                     # 新生代2G
-XX:MetaspaceSize=256m                     # 元空间触发GC阈值
-XX:MaxMetaspaceSize=256m                  # 元空间最大值
-Xss512k                                   # 线程栈512KB
-XX:+UseG1GC                               # 使用G1收集器
-XX:MaxGCPauseMillis=200                   # 目标最大GC停顿200ms
-XX:ParallelGCThreads=4                    # 并行GC线程数
-XX:ConcGCThreads=2                        # 并发GC线程数
-XX:InitiatingHeapOccupancyPercent=45      # 触发并发标记的堆占用
-XX:G1HeapRegionSize=4m                    # G1 Region大小
-XX:+HeapDumpOnOutOfMemoryError            # OOM时自动dump
-XX:HeapDumpPath=/var/log/heapdump.hprof
-Xloggc:/var/log/gc.log                    # GC日志
-XX:+DisableExplicitGC                     # 禁用System.gc()

调优思路

  1. -Xms=-Xmx避免扩容开销。
  2. 根据响应时间要求选择GC(G1/CMS/Parallel)。
  3. 先保证堆大小满足业务需求,再调整GC参数。
  4. 压测后分析GC日志(使用GCeasy/GCEasy在线分析)。
  5. 关注:GC频率、STW时间、晋升大小、Region回收情况。