常用参数按用途分类:
堆内存:-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 字)