在 Ubuntu 上编译 Java 时提示内存不足(OutOfMemoryError / 编译卡死 / 系统变慢),通常可以从以下几方面解决:
编译时 JVM 默认堆太小。
javac -J-Xmx2g -J-Xms512m *.java
export MAVEN_OPTS="-Xmx2g -Xms512m"
mvn clean compile
或:
mvn -Xmx2g clean package
export GRADLE_OPTS="-Xmx2g -Xms512m"
或在 gradle.properties 中:
org.gradle.jvmargs=-Xmx2g -Xms512m
Ubuntu 默认可能没开 swap。
free -h
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
开机自动挂载:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
特别是 Maven / Gradle。
mvn -T1 clean compile
org.gradle.parallel=false
如 Lombok、MapStruct、Annotation Processor。
✅ 加大内存
✅ 关闭不必要的 processor
✅ 分模块编译
如果是 Docker:
docker run -e MAVEN_OPTS="-Xmx2g" ...
如果是小内存 VPS(1G):
free -h # 看内存和 swap
top / htop # 看谁吃内存
java -version # 确认 JDK
| 场景 | 建议 |
|---|---|
| 普通项目 | -Xmx2g |
| 大项目 | -Xmx4g |
| 1G 服务器 | 必须开 swap |
如果你愿意,可以告诉我:
我可以给你精确命令。