温馨提示×

ubuntu下java内存怎么设

小樊
55
2026-09-19 07:30:41
栏目: 编程语言

在 Ubuntu 下设置 Java 内存,通常是通过 JVM 启动参数 来配置的,最常用的是 -Xms(初始堆内存)和 -Xmx(最大堆内存)。下面按常见场景给你说明。


一、最常用:设置堆内存

java -Xms512m -Xmx2g -jar your_app.jar

含义:

  • -Xms512m:JVM 启动时使用 512MB 内存
  • -Xmx2g:JVM 最多使用 2GB 内存

✅ 推荐:

  • 生产环境 Xms 和 Xmx 设成一样,避免动态扩容带来抖动

二、查看当前 Java 内存设置

java -XX:+PrintFlagsFinal -version | grep HeapSize

或者:

jps
jstat -gc <pid>

三、设置非堆内存(元空间)

Java 8 以后用 Metaspace 代替 PermGen:

java -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -jar app.jar

四、在 Tomcat 中设置(Ubuntu 常见)

编辑:

sudo nano /opt/tomcat/bin/setenv.sh

加入:

export CATALINA_OPTS="-Xms1g -Xmx2g -XX:MaxMetaspaceSize=256m"

重启 Tomcat:

sudo systemctl restart tomcat

五、在 systemd 服务中设置(Spring Boot 等)

如果你用 .service 文件:

[Service]
Environment="JAVA_OPTS=-Xms1g -Xmx2g"
ExecStart=/usr/bin/java $JAVA_OPTS -jar /path/app.jar

然后:

sudo systemctl daemon-reload
sudo systemctl restart yourapp

六、Docker 容器中的 Java 内存(重要)

在 Ubuntu + Docker 中,一定要限制 JVM 内存,否则容易 OOM:

docker run -e JAVA_OPTS="-Xms512m -Xmx512m" my-java-app

Java 8u191+ 支持自动识别容器内存:

-XX:+UseContainerSupport

七、常见问题

1️⃣ 设置不生效?

  • 检查是否被 JAVA_TOOL_OPTIONS 覆盖
  • 是否被启动脚本覆盖

2️⃣ Ubuntu 内存够但 Java 报 OOM?

  • 可能是 MaxMetaspaceSize 没设
  • 或者线程数太多

如果你能告诉我:

  • 用的是 普通 jar / Tomcat / Docker / Spring Boot
  • Ubuntu 版本和 Java 版本

我可以给你 精确的一行配置。

0 踩