在 Debian 上对 Tomcat 内存调优,核心就是调整 JVM 堆内存及相关参数。下面按「最常见做法 → 参数说明 → 实战示例 → 排查建议」来说明。
Tomcat 本身是 Java 程序,内存由 JVM 参数决定,不是 Tomcat 配置文件直接控制的。
常见参数:
-Xms:初始堆内存-Xmx:最大堆内存-XX:PermSize / -XX:MetaspaceSize(JDK8+ 用 Metaspace)-Xss:线程栈大小编辑:
/etc/default/tomcat9
# 或 tomcat10,看你版本
加上:
JAVA_OPTS="-Xms512m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
生效:
systemctl restart tomcat9
编辑:
$TOMCAT_HOME/bin/setenv.sh
如果没有就新建:
export JAVA_OPTS="-Xms1g -Xmx4g"
-Xms1g -Xmx2g
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+UseConcMarkSweepGC
JAVA_OPTS="
-Xms2g
-Xmx2g
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/tomcat9/heapdump.hprof
"
ps -ef | grep tomcat
jstat -gcutil <pid> 1000
tail -f /var/log/tomcat9/catalina.out
❌ 只改 server.xml(无效)
❌ Xmx 超过物理内存
❌ 没重启 Tomcat
❌ 32 位 JDK 不支持大内存
| 场景 | 建议 |
|---|---|
| 小网站 | 512M–1G |
| 中型应用 | 2G |
| 大并发 | 4G+ + G1 |
| 频繁 Full GC | 调大堆 / 换 GC |
如果你愿意,可以告诉我:
我可以给你一套直接能用的参数。