在 Debian 上对 Java 应用进行内存调优,通常包含 JVM 参数调整、系统层面限制、监控与分析 三个层面。下面按实战步骤说明。
java -version
which java
如果是 OpenJDK:
sudo apt list --installed | grep openjdk
java -Xms512m -Xmx2g -jar app.jar
| 参数 | 含义 |
|---|---|
-Xms |
初始堆大小 |
-Xmx |
最大堆大小 |
✅ 建议:
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=256m
避免:
java.lang.OutOfMemoryError: Metaspace
-XX:+UseParallelGC
-XX:+UseG1GC
高并发低延迟:
-XX:+UseZGC # JDK 15+
-Xlog:gc*:file=/var/log/app/gc.log:time,level,tags
或 JDK 8:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/app/gc.log
free -h
top
htop
sudo nano /etc/security/limits.conf
appuser soft memlock unlimited
appuser hard memlock unlimited
[Service]
MemoryLimit=3G
sudo systemctl daemon-reload
sudo systemctl restart app
jps
jstat -gc <pid>
jmap -heap <pid>
jstack <pid>
java -jar arthas-boot.jar
✅ 增大 -Xmx,检查内存泄漏
✅ 换 GC(G1/ZGC),减少对象创建
✅ 加:
-XX:+UseContainerSupport
-XX:MaxRAMPercentage=70
java \
-Xms2g -Xmx2g \
-XX:MetaspaceSize=128m \
-XX:MaxMetaspaceSize=256m \
-XX:+UseG1GC \
-Xlog:gc*:file=/var/log/app/gc.log \
-jar app.jar
如果你能告诉我:
我可以直接给你一套 可复制的调优参数 ✅