在 Debian 上运行 Java 程序时,“调内存”通常是指设置 JVM 堆内存大小(以及少量非堆内存)。下面按常见场景说明。
java -Xms512m -Xmx2048m -jar app.jar
参数说明:
-Xms512m:初始堆内存(启动时就分配)-Xmx2048m:最大堆内存(最常见调优项)一般建议:
-Xms和-Xmx设为一样,避免频繁 GC
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=256m
-Xss256k
如果你是 systemd 服务(如 Spring Boot):
/etc/systemd/system/myapp.service
[Unit]
Description=My Java App
After=network.target
[Service]
User=appuser
ExecStart=/usr/bin/java -Xms1g -Xmx2g -jar /opt/app/app.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
重新加载并启动:
sudo systemctl daemon-reload
sudo systemctl restart myapp
/etc/tomcat9/setenv.sh
export JAVA_OPTS="-Xms1g -Xmx2g"
重启:
sudo systemctl restart tomcat9
ps -ef | grep java
jstat -gc <pid>
或
top -p <pid>
报错:
Cannot allocate memory
→ 超过物理内存或被 systemd 限制
-Xmx2g-Xmx4gjava \
-Xms2g -Xmx2g \
-XX:MetaspaceSize=256m \
-XX:MaxMetaspaceSize=512m \
-XX:+UseG1GC \
-jar app.jar
如果你能告诉我:
我可以给你更精确的配置示例。