CentOS 下 Tomcat 内存调优实操指南
一 配置入口与原则
sudo systemctl restart tomcat。原则是:将 -Xms 与 -Xmx 设为相同以避免运行期扩缩堆带来的停顿;堆大小一般不超过物理内存的 50%~80%,并预留内存给 元空间 Metaspace、本地内存(Direct Memory/NIO)、操作系统与Page Cache。二 关键 JVM 参数与版本差异
JAVA_OPTS="-Xms2g -Xmx2g -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseG1GC"JAVA_OPTS="-Xms4g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/log/"。三 监控与诊断
jstat -gcutil <pid> 1000(每 1s 输出一次),关注 YGC/YGCT、FGC/FGCT、GCT 等指标变化。jmap -dump:live,format=b,file=heap.hprof <pid>,再用 jhat 或 VisualVM/MAT 分析对象分布与泄漏根因。四 常见场景与建议配置
JAVA_OPTS="-Xms1g -Xmx1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/log/"JAVA_OPTS="-Xms6g -Xmx6g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/log/"JAVA_OPTS="-Xms12g -Xmx12g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/log/ -XX:G1ReservePercent=15"(可按应用对象生命周期适当调节 G1ReservePercent)。五 易错点与排查路径