在 Debian 上调整 Java 内存(JVM 堆内存等),主要取决于你怎么运行 Java 程序(命令行、systemd、Tomcat、Docker 等)。下面按常见场景说明。
通过 JVM 参数调整内存:
java -Xms512m -Xmx1024m -jar app.jar
常用参数说明:
| 参数 | 含义 |
|---|---|
-Xms |
初始堆内存 |
-Xmx |
最大堆内存 |
-Xmn |
年轻代大小(可选) |
-XX:MetaspaceSize |
元空间初始大小 |
-XX:MaxMetaspaceSize |
元空间最大值 |
示例(生产常见):
java -Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -jar app.jar
如果你是用 systemd 启动 Java(如 /etc/systemd/system/xxx.service):
[Service]
ExecStart=/usr/bin/java -Xms1g -Xmx2g -jar /opt/app/app.jar
sudo systemctl daemon-reload
sudo systemctl restart app.service
✅ 注意:
systemd 默认有 MemoryMax,如果设太小会 OOM。
查看:
systemctl show app.service | grep Memory
setenv.shsudo nano /opt/tomcat/bin/setenv.sh
写入:
export JAVA_OPTS="-Xms1g -Xmx2g"
重启:
sudo systemctl restart tomcat
⚠️ 重点:Java 8u191+ 才支持自动识别容器内存
java -XX:+UseContainerSupport -Xms512m -Xmx512m -jar app.jar
Docker 限制:
docker run -m 1g my-java-app
jps
jinfo <pid> | grep Xmx
或:
jstat -gc <pid>
ulimit -a
-Xms2g
-Xmx2g
-XX:+UseG1GC
-XX:MaxMetaspaceSize=512m
如果你能告诉我:
java -version)我可以给你精确配置。