温馨提示×

ubuntu java编译内存不足咋办

小樊
38
2026-10-13 04:23:46
栏目: 编程语言

在 Ubuntu 上用 javac 或 java 编译/运行时提示内存不足(OutOfMemoryError / 编译卡死 / 被杀),可以从下面几个方面解决。


一、确认是不是真的内存不足

free -h
top
  • 如果 free 很小、swap 也没了,就是系统内存不够
  • 如果是 Java heap space 或 GC overhead limit exceeded,是 JVM 参数问题

二、给 Java 编译/运行加大内存(最常见)

1️⃣ 编译时(javac)

javac 本身内存较小,大型项目容易炸:

export JAVA_TOOL_OPTIONS="-Xms512m -Xmx2g"
javac YourFile.java

或 Maven / Gradle 项目:

Maven

export MAVEN_OPTS="-Xms512m -Xmx2g"
mvn compile

Gradle

export GRADLE_OPTS="-Xms512m -Xmx2g"
# 或
./gradlew compileJava --max-workers=2

2️⃣ 运行时(java)

java -Xms512m -Xmx2g -jar app.jar

参数说明:

  • -Xms:初始堆内存
  • -Xmx:最大堆内存(最重要)

三、系统内存太小(云服务器常见)

1️⃣ 增加 Swap(非常有效)

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

开机自动挂载:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

2️⃣ 减少并行编译

Maven:

mvn -T 1 compile

Gradle:

./gradlew build --parallel=false

四、IDE(IntelliJ / Eclipse)内存不足

编辑 IDE 的 VM 参数:

IntelliJ

Help → Edit Custom VM Options
-Xms512m
-Xmx2048m

五、常见错误对应解决

报错 解决
Java heap space 加大 -Xmx
GC overhead 加大内存 + 减少并发
killed (dmesg) 系统 OOM,加 swap
javac 很慢 关注解处理器 / 减线程

六、最小可用示例(1G 服务器)

sudo swapon --show
java -Xms256m -Xmx768m -jar app.jar

如果你能贴出:

  • Ubuntu 版本
  • Java 版本
  • 具体报错信息
    我可以给你精确参数。

0 踩