Java 在 Linux 上的内存配置指南
一 核心参数与含义
二 常用配置方式
java -Xms512m -Xmx2g -jar app.jarexport JAVA_OPTS="-Xms512m -Xmx2g";启动:java $JAVA_OPTS -jar app.jar[Service]
Environment="JAVA_OPTS=-Xms512m -Xmx2g"
ExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/app/app.jar
修改后执行:systemctl daemon-reload && systemctl restart your-service三 容器与物理机的配置差异
java -XX:+UseContainerSupport -XX:MaxRAMPercentage=75 -jar app.jarfree -h),再为堆分配合理上限,通常将 -Xmx 设为物理内存的50%–75%,其余留给堆外内存、元空间、线程栈与操作系统。free -h → 规划 -Xmx8g 等。四 监控与验证
jps -ljcmd <pid> GC.heap_infojconsole 或 jvisualvm(连接目标进程查看堆、线程、GC 等)五 实用配置示例
java \
-Xms1g -Xmx4g \
-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m \
-Xss1m \
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 \
-XX:MaxDirectMemorySize=256m \
-jar /opt/app/app.jar
java \
-XX:+UseContainerSupport \
-XX:MaxRAMPercentage=70 \
-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m \
-Xss1m \
-XX:+UseG1GC \
-jar /app.jar
[Service]
Environment="JAVA_OPTS=-Xms1g -Xmx4g -XX:+UseG1GC"
ExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/app/app.jar
User=appuser
Restart=on-failure