下面是最常用、最稳定、生产环境直接可用的 Java 内存优化 JVM 参数,按用途分类,附推荐配置和说明,适用于 SpringBoot/Tomcat/ 微服务等所有 Java 应用。
小微服务
java -Xms512m -Xmx1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+UseG1GC -XX:MaxGCPauseMillis=150 -Xss256k
中等服务
java -Xms1g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+UseG1GC -XX:MaxGCPauseMillis=150 -Xss512k
大内存服务
java -Xms4g -Xmx8g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+UseG1GC -XX:MaxGCPauseMillis=150 -Xss1m
参数解释:
一、核心堆内存参数(必配)
控制 Java 最大 / 初始内存,避免 OOM、频繁 GC、内存浪费。
-Xms 初始堆内存
-Xmx 最大堆内存(生产核心配置)
二、元空间配置(JDK8+,替代永久代)
防止元空间溢出,尤其在使用反射、动态代理的场景。
-XX:MetaspaceSize 元空间初始大小
-XX:MaxMetaspaceSize 元空间最大大小
三、新生代 / 老年代优化(降低 GC 频率)
调整对象分配策略,减少 FullGC。
-XX:NewRatio 新生代大小(官方不推荐直接用 -Xmn,建议用比例),2表示老年代:新生代 = 2:1(新生代占堆 1/3)
-XX:SurvivorRatio 伊甸区:S0:S1 比例 8表示Eden : S0 : S1 = 8:1:1
四、GC 垃圾收集器(性能关键)
生产首选:G1 收集器(JDK8+ 默认,低延迟、高吞吐)
-XX:+UseG1GC
-XX:MaxGCPauseMillis=150 期望最大 GC 停顿时间(单位:毫秒,默认 200ms)
高并发低延迟:ZGC(JDK11+ 推荐)
-XX:+UseZGC
五、栈内存优化(避免线程栈溢出)
-Xss 线程栈大小(默认 1M,微服务可适当调小),高并发服务:-Xss256k 或 -Xss512k,递归深的业务:-Xss1m
Categories:
系统运维