在 Debian 上调整 Java 内存(JVM 内存),常见做法取决于你是 直接运行 Java 程序、使用 Tomcat / Spring Boot,还是 通过 systemd 管理服务。下面按场景给你一个完整说明。
Java 内存主要通过 JVM 参数 调整:
-Xms # 初始堆内存
-Xmx # 最大堆内存
-XX:MetaspaceSize
-XX:MaxMetaspaceSize
java -Xms512m -Xmx2048m -jar app.jar
表示:
✅ 生产环境建议:-Xms 和 -Xmx 设置成一样,避免频繁扩容影响性能。
java -Xms1g -Xmx2g -jar yourapp.jar
或:
export JAVA_OPTS="-Xms1g -Xmx2g"
java $JAVA_OPTS -jar yourapp.jar
setenv.sh(推荐)sudo nano /opt/tomcat/bin/setenv.sh
内容:
export CATALINA_OPTS="-Xms1g -Xmx2g"
赋予执行权限:
chmod +x /opt/tomcat/bin/setenv.sh
重启 Tomcat:
sudo systemctl restart tomcat
sudo systemctl edit tomcat
添加:
[Service]
Environment="CATALINA_OPTS=-Xms1g -Xmx2g"
例如你的服务是 /etc/systemd/system/myapp.service
[Service]
ExecStart=/usr/bin/java -Xms1g -Xmx2g -jar /opt/app/app.jar
或:
Environment="JAVA_OPTS=-Xms1g -Xmx2g"
ExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/app/app.jar
重载并重启:
sudo systemctl daemon-reload
sudo systemctl restart myapp
⚠️ 非常重要
Java 8u191+ 支持容器感知:
java -XX:+UseContainerSupport -Xmx512m -jar app.jar
Docker 示例:
docker run -e JAVA_OPTS="-Xms512m -Xmx1g" myimage
jps
jinfo -flags <pid>
ps aux | grep java
curl http://localhost:8080/actuator/metrics/jvm.memory.used
free -h
-Xmx 不要超过 物理内存 70~80%-Xms2g
-Xmx2g
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
-Xms4g
-Xmx4g
❌ 只设置 -Xmx,不设置 -Xms
❌ Docker 里不设 -XX:+UseContainerSupport
❌ 把 JVM 参数写在 JAVA_HOME 里
❌ 忘记重启服务
你可以直接贴:
java -version
free -h
cat /etc/systemd/system/xxx.service