在Linux中配置Java内存主要通过设置JVM参数实现,以下是关键配置方式及参数说明:
堆内存(Heap)
-Xms:设置初始堆大小(如 -Xms512m,默认为物理内存的1/64)。-Xmx:设置最大堆大小(如 -Xmx4g,建议与 -Xms 保持一致以避免动态扩容开销)。-Xmn:设置新生代大小(如 -Xmn1g,可替代 -XX:NewSize 和 -XX:MaxNewSize)。元空间(Metaspace,JDK 8+)
-XX:MetaspaceSize:初始元空间大小(如 -XX:MetaspaceSize=256m)。-XX:MaxMetaspaceSize:最大元空间大小(如 -XX:MaxMetaspaceSize=512m,避免内存泄漏)。其他内存区域
-XX:MaxDirectMemorySize:限制堆外内存(如NIO使用的直接内存,默认与 -Xmx 一致)。命令行参数
直接在启动Java应用时添加参数,例如:
java -Xms2g -Xmx4g -XX:MetaspaceSize=256m -jar app.jar
启动脚本(如Shell脚本)
在脚本中通过 JAVA_OPTS 环境变量设置,例如:
export JAVA_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC"
java $JAVA_OPTS -jar app.jar
服务管理文件(如systemd)
编辑服务文件(如 /etc/systemd/system/app.service),在 ExecStart 中添加参数:
[Service]
ExecStart=/usr/bin/java -Xms512m -Xmx1g -jar /path/to/app.jar
之后执行 systemctl daemon-reload 生效。
-Xms+-Xmx)建议不超过物理内存的70%,预留空间给系统和其他进程。-XX:+UseG1GC),可设置 -XX:MaxGCPauseMillis 控制暂停时间。-XX:+UseConcMarkSweepGC,JDK 9已标记废弃)。jstat -gc <pid> 或 VisualVM 工具观察内存使用情况,调整参数直至GC频率和耗时合理。参考来源: