在 Debian 下调整 Java 内存,通常是通过 JVM 启动参数 来设置的,具体做法取决于你是怎么运行 Java 程序的(命令行、systemd 服务、Tomcat、Docker 等)。下面按常见场景说明。
java -Xms512m -Xmx1024m -jar yourapp.jar
参数说明:
-Xms512m:初始堆内存 512MB-Xmx1024m:最大堆内存 1024MBm(MB)、g(GB)示例(2GB 起步,4GB 上限):
java -Xms2g -Xmx4g -jar app.jar
如果你用 systemd 管理服务(如 /etc/systemd/system/myapp.service):
[Service]
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/app/app.jar
修改后执行:
sudo systemctl daemon-reload
sudo systemctl restart myapp
查看内存是否生效:
systemctl show myapp | grep Memory
setenv.shsudo nano /opt/tomcat/bin/setenv.sh
加入:
export JAVA_OPTS="-Xms512m -Xmx2048m"
如果没有该文件,新建并赋权:
sudo chmod +x /opt/tomcat/bin/setenv.sh
重启 Tomcat:
sudo systemctl restart tomcat
export JAVA_OPTS="-Xms512m -Xmx1024m"
java $JAVA_OPTS -jar app.jar
Docker 中一定要显式设置,否则容易 OOM:
docker run -e JAVA_OPTS="-Xms512m -Xmx1024m" myjavaimage
或在 Dockerfile:
ENV JAVA_OPTS="-Xms512m -Xmx1024m"
⚠️ 注意:
-Xmx=容器内存的 70%~80%
ps -ef | grep java
jcmd
jcmd <pid> VM.flags
jstat -gc <pid>
因为 JVM 还包括:
建议:
-Xmx + 额外 20%~30% 系统内存
512m ~ 1g2g ~ 4g不超过物理内存 70%如果你能告诉我:
我可以给你精确的内存参数建议。