温馨提示×

ubuntu java内存如何调

小樊
48
2026-09-10 03:30:07
栏目: 编程语言

在 Ubuntu 上调整 Java 内存,通常是通过 JVM 启动参数 来设置的。下面按常见场景给你说明。


一、最常用的 JVM 内存参数

Java 内存主要由 堆内存 和 非堆内存(元空间等) 组成。

1️⃣ 堆内存(最重要)

java -Xms512m -Xmx2048m -jar app.jar

含义:

  • -Xms512m:初始堆内存 512MB
  • -Xmx2048m:最大堆内存 2GB

✅ 建议:

  • 生产环境 -Xms 和 -Xmx 设成一样,避免动态扩容影响性能
  • 不要超过物理内存的 70%~80%

2️⃣ 元空间(JDK 8+)

-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=512m

防止元空间无限增长导致 OOM。


3️⃣ 栈内存(线程)

-Xss256k

每个线程的栈大小,线程多时可适当减小。


二、Ubuntu 上常见使用方式

✅ 方式 1:直接运行 Java 程序

java -Xms1g -Xmx2g -jar your_app.jar

✅ 方式 2:Tomcat(非常常见)

编辑:

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

加入:

export JAVA_OPTS="-Xms1g -Xmx2g -XX:MaxMetaspaceSize=512m"

没有就新建该文件。


✅ 方式 3:Spring Boot(systemd 服务)

编辑 service 文件:

sudo nano /etc/systemd/system/your-app.service

在 [Service] 中:

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

然后:

sudo systemctl daemon-reload
sudo systemctl restart your-app

✅ 方式 4:Docker 中的 Java

docker run -e JAVA_OPTS="-Xms512m -Xmx1g" my-java-image

⚠️ JDK 8u191+ 推荐加:

-XX:+UseContainerSupport

三、查看 Java 内存使用情况

1️⃣ 查看进程

ps aux | grep java

2️⃣ JVM 自带工具

jps
jstat -gc <pid>

3️⃣ 实时查看

jconsole
# 或
jvisualvm

四、常见错误

❌ 设置内存超过物理内存
❌ 容器里没限制内存但 JVM 不知道
❌ -Xmx 太大导致系统 swap


五、推荐生产配置示例(4G 服务器)

-Xms2g
-Xmx2g
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC

如果你能告诉我:

  • 用的 JDK 版本
  • 是 Spring Boot / Tomcat / 普通 Java
  • 服务器内存多大

我可以给你一份精确优化方案。

0 踩