jvm之参数与调优

一、堆内存核心参数

  1. -Xms

    初始堆内存,生产建议 =Xmx,避免运行时动态扩容卡顿

  2. -Xmx

    最大堆内存,防止 OOM,根据服务器配置合理设置

  3. -Xmn

    新生代整体大小(Eden+2 个 Survivor)

  4. -XX:NewRatio

    老年代 / 新生代 比例

    例:NewRatio=2 老年代:新生代 = 2:1

  5. -XX:SurvivorRatio

    Eden / 单个 Survivor 比例

    例:SurvivorRatio=8 Eden:S0:S1 = 8:1:1

二、元空间参数

  • -XX:MetaspaceSize

    元空间初始阈值,触发首次元空间 GC

  • -XX:MaxMetaspaceSize

    元空间最大值,防止元空间溢出

JDK8 永久代取消,改用元空间,直接使用本地内存

三、GC 收集器 & 性能参数

  1. G1 相关
  • -XX:+UseG1GC 启用 G1 收集器
  • -XX:MaxGCPauseMillis=200 目标最大停顿时间
  1. ZGC 低延迟
  • -XX:+UseZGC 启用 ZGC(JDK11+)
  1. 通用 GC 配置
  • -XX:+PrintGCDetails 打印 GC 详细日志
  • -XX:+HeapDumpOnOutOfMemoryError OOM 自动 dump
  • -XX:HeapDumpPath 指定 dump 文件路径

四、调优三大核心目标

  1. 降低 GC 频率

    合理分代大小,减少短周期 Minor GC、避免频繁扩容

  2. 缩短 STW 停顿

    选用低延迟收集器:G1 / ZGC,限制最大暂停时间

  3. 杜绝 Full GC & OOM

    控制老年代增长、限制元空间、合理设置堆上限、排查内存泄漏

五、标准调优步骤

  1. 监控

    jstat、GC 日志、VisualVM、Arthas 采集运行数据

  2. 分析

    定位:频繁 GC、STW 过长、老年代暴涨、元空间溢出、堆外内存泄漏

  3. 参数调整

    调堆大小、分代比例、更换收集器、优化内存区域阈值

  4. 压测验证

    调整后压测回归,观察 GC 指标、吞吐量、响应时间、CPU 负载

六、生产常用基础配置模板

1
2
3
4
5
6
7
8
# 堆内存
-Xms4g -Xmx4g -Xmn1g
# 元空间
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
# G1 + 可控停顿
-XX:+UseG1GC -XX:MaxGCPauseMillis=150
# OOM兜底
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/dump

七、一句话速记

内存参数控制堆 + 分代 + 元空间

GC 参数选择收集器 + 停顿限制

调优核心:少 GC、短停顿、无 FullGC、防 OOM

流程:监控→分析→改参→压测。



jvm之参数与调优
http://hanqichuan.com/2026/04/17/jvm/JVM之参数与调优/
作者
韩启川
发布于
2026年4月17日
许可协议