在 Debian 上配置 Tomcat 的内存(Heap / Non-Heap),本质就是给 JVM 设置参数(如 -Xms、-Xmx)。不同 Tomcat 安装方式(系统包 / 官方压缩包)配置位置稍有不同,下面按常见场景说明。
| 参数 | 含义 |
|---|---|
-Xms |
JVM 初始堆内存 |
-Xmx |
JVM 最大堆内存 |
-XX:MetaspaceSize |
元空间初始大小(Java 8+) |
-XX:MaxMetaspaceSize |
元空间最大值 |
-Xss |
每个线程的栈大小 |
✅ 生产环境建议
-Xms 和 -Xmx 设置成一样,避免动态扩容带来性能抖动
示例:
-Xms2g
-Xmx2g
catalina.sh一般路径:
/usr/local/tomcat/bin/catalina.sh
或你自己的 Tomcat 目录。
catalina.shvim bin/catalina.sh
在文件顶部(#!/bin/sh 之后)添加:
export JAVA_OPTS="-Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
✅ 推荐使用 JAVA_OPTS(而不是 CATALINA_OPTS,除非你明确区分启动/停止)
./bin/shutdown.sh
./bin/startup.sh
如果你是用 apt 安装的:
sudo apt install tomcat9
sudo vim /etc/default/tomcat9
JAVA_OPTS="-Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
sudo systemctl restart tomcat9
如果是 systemd 管理 Tomcat:
systemctl status tomcat
sudo systemctl edit tomcat
添加:
[Service]
Environment="JAVA_OPTS=-Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
sudo systemctl daemon-reload
sudo systemctl restart tomcat
jps
jinfo -flags <pid>
ps aux | grep tomcat
http://IP:8080/manager/status
-Xms512m -Xmx512m
-Xms2g -Xmx2g
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
-Xms4g -Xmx4g
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=1g
如果你愿意,可以告诉我:
我可以给你 精确推荐配置。