温馨提示×

ubuntu编译java慢怎么解

小樊
37
2026-10-01 11:17:19
栏目: 编程语言

在 Ubuntu 上编译 Java 慢,通常可以从硬件、JDK、构建工具、系统配置几个层面来优化。下面按“最常见 → 进阶”给你一套实用方案。


一、最常见原因 & 快速见效方案

1. 换用更快的 JDK(非常重要)

很多“慢”是因为用了默认 OpenJDK + 解释执行或 GC 不适合。

✅ 推荐:

  • GraalVM(编译/运行都快)
  • Eclipse Temurin(Adoptium)
  • 避免使用很老的 JDK(如 8u 早期版本)
# 示例:安装 Temurin 17
sudo apt install -y wget apt-transport-https
wget -qO - https://packages.adoptium.net/artifests/... | sudo tee ...

并用:

java -version

确认生效。


2. 给 JVM 足够内存(编译慢的头号原因)

Ubuntu 默认 JVM 内存很小,编译大项目会频繁 GC。

Maven

export MAVEN_OPTS="-Xmx2g -XX:+UseG1GC"

Gradle

export GRADLE_OPTS="-Xmx4g -XX:+UseG1GC"

或 gradle.properties:

org.gradle.jvmargs=-Xmx4g -XX:+UseG1GC

3. 开启并行 / 增量编译

Maven

mvn -T 4 compile
# 或
mvn -T 1C compile

Gradle(非常重要)

org.gradle.parallel=true
org.gradle.caching=true

二、Ubuntu 系统层面的优化

4. 使用 SSD(不是机械盘)

如果是虚拟机或老机器:

  • 编译器大量小文件 IO
  • HDD 会非常慢

✅ 检查:

lsblk

看是否在 SSD


5. 关闭杀毒 / 文件索引(Linux 少见但存在)

如果你装了:

  • clamav
  • Docker overlay 很慢
  • 云服务器 IO 限制

可临时测试:

systemctl stop clamav-freshclam

6. 减少文件系统开销

如果是 WSL / 网络盘: ❌ 不要在:

  • /mnt/c
  • NFS
  • SMB

✅ 放在:

  • Ubuntu 本地 ext4
  • /home/you/project

三、构建工具专项优化

7. Maven 加速

mvn -o compile   # 离线
mvn -pl module -am compile  # 只编需要模块

用国内镜像(如果你在中国):

<mirror>
  <id>aliyun</id>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

8. Gradle 加速(强烈建议)

org.gradle.daemon=true
org.gradle.configureondemand=true

清理旧构建:

./gradlew clean build --refresh-dependencies

四、JDK 编译参数优化

9. 使用增量编译器

  • Maven:maven-compiler-plugin 最新版
  • Gradle:默认已支持

10. 避免 annotation processor 拖慢

如:

  • Lombok
  • MapStruct
  • Dagger

可临时关闭测试:

mvn compile -Dlombok.disable=true

五、极端情况(服务器 / CI)

11. 使用 Build Cache

  • Gradle Build Cache
  • Maven mvn cacher

12. Docker 编译慢

❌ 不要在容器里反复下载依赖
✅ 挂载:

-v ~/.m2:/root/.m2

六、快速自检清单(你可以照着查)

# 1. JDK 是否合适
java -version

# 2. 内存够不够
free -h

# 3. 磁盘类型
lsblk

# 4. 编译命令是否并行
mvn -T 1C

如果你愿意,可以告诉我:

  • 用的是 Maven 还是 Gradle
  • JDK 版本
  • 是 本地 / 虚拟机 / WSL / Docker
  • 项目大小(模块数)

我可以直接给你一套最优编译参数配置。

0 踩