在 Debian 上调整 Java 内存,本质就是给 JVM 加启动参数,和你用的是什么发行版关系不大。下面按常见场景说明。
java -Xms512m -Xmx2048m -jar app.jar
参数含义:
-Xms512m:初始堆内存(启动时分配)-Xmx2048m:最大堆内存(最常见调优项)-Xss256k:每个线程栈大小(线程多时可调小)一般建议:
-Xms 和 -Xmx 设为一样,避免动态扩容抖动ps aux | grep java
jstat -gc <pid>
或
jcmd <pid> VM.flags
直接在命令里加参数即可:
java -Xms1g -Xmx2g -jar yourapp.jar
编辑服务文件,例如:
sudo systemctl edit yourapp.service
加入:
[Service]
Environment="JAVA_OPTS=-Xms1g -Xmx2g"
ExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/app/app.jar
保存后:
sudo systemctl daemon-reload
sudo systemctl restart yourapp
/etc/default/tomcat9JAVA_OPTS="-Xms1g -Xmx2g"
setenv.shexport CATALINA_OPTS="-Xms1g -Xmx2g"
java -Xms512m -Xmx1024m -jar app.jar
或在 application.properties 里只能调部分:
server.tomcat.max-threads=200
-XX:+UseG1GC
-Xlog:gc*:file=/var/log/app/gc.log:time
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/app/heapdump.hprof
Docker 里内存限制不生效
-XX:+UseContainerSupport
swap 导致 Java 变慢
free -h
如果 swap 很大,建议关掉或限制。
32 位 Java
java -version
如果是 Client VM,最大堆一般只能 1~2G。
| 场景 | 建议 |
|---|---|
| 小工具 | 256m~512m |
| Web 服务 | 1g~2g |
| 微服务 | 512m~1g |
| 大数据 | 4g+ |
如果你愿意,可以告诉我:
我可以直接给你一份可复制的配置。