Ubuntu 上 Java 内存管理的实用调整指南
一 核心思路与快速检查
free -h,关注 available 字段判断可用内存是否充足。ulimit -a,关注 max memory size、virtual memory 等条目是否过低。二 常用 JVM 内存参数与示例
java -Xms2g -Xmx2g -jar app.jarjava -Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -jar app.jar-XX:+UseParallelGC-XX:+UseG1GC,可配合 -XX:MaxGCPauseMillis=… 设定目标停顿时间-XX:+UseZGC(JDK 11+)或 -XX:+UseShenandoahGC(需 JDK 支持)-XX:NewRatio=1 表示 1:1。三 设置方式与生效验证
java -Xms512m -Xmx2g -XX:+UseG1GC -jar your-application.jarexport JAVA_OPTS="-Xms512m -Xmx2g";启动:java $JAVA_OPTS -jar app.jarexport _JAVA_OPTIONS="-Xms512m -Xmx2g"[Service]
ExecStart=/usr/bin/java -Xms2g -Xmx2g -XX:+UseG1GC -jar /opt/app/app.jar
Environment="JAVA_OPTS=-Xms2g -Xmx2g"
java -XX:+PrintFlagsFinal -version | grep -E 'MaxHeapSize|MaxMetaspaceSize'jstat -gc <pid> 1000四 按场景给出参数模板
java -Xms2g -Xmx2g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:MaxMetaspaceSize=512m \
-jar app.jar
java -Xms4g -Xmx4g \
-XX:+UseParallelGC \
-XX:MaxMetaspaceSize=512m \
-jar app.jar
java -Xms4g -Xmx4g \
-XX:+UseZGC \
-XX:MaxMetaspaceSize=512m \
-jar app.jar
五 系统层面的配合与常见排错
ulimit -m unlimited、ulimit -v unlimited(仅在需要时、且了解影响后使用)。-XX:G1ReservePercent。