常用参数按用途分类:

堆内存:-Xms 初始堆、-Xmx 最大堆,生产环境通常设为相等避免动态扩缩容;-Xmn-XX:NewRatio 控制新生代大小;-XX:SurvivorRatio 设置 Eden 与 Survivor 比例(默认 8:1:1)。

元空间与栈:-XX:MetaspaceSize(触发 Full GC 的初始阈值)、-XX:MaxMetaspaceSize-Xss 线程栈大小,线程多的应用可调小。

GC 相关:选择收集器 -XX:+UseG1GC-XX:+UseZGC(JDK 15+ 正式可用)等;-XX:MaxGCPauseMillis G1 期望最大停顿;-XX:MaxTenuringThreshold 对象晋升老年代的年龄阈值。

日志与诊断:JDK 8 用 -XX:+PrintGCDetails -Xloggc:...,JDK 9+ 统一为 -Xlog:gc*:file=...-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath 在 OOM 时自动 dump 堆,生产环境强烈建议开启。

java -Xms4g -Xmx4g -XX:+UseG1GC \
     -XX:MaxGCPauseMillis=200 \
     -Xlog:gc*:file=gc.log \
     -XX:+HeapDumpOnOutOfMemoryError -jar app.jar

要点:先监控再调优,没有银弹参数;容器环境注意用 -XX:MaxRAMPercentage 让 JVM 感知 cgroup 限制。追问方向:-Xms 与 -Xmx 为什么设相等?

(约 350 字)