温馨提示×

centos怎么优化java编译速度

小樊
37
2026-09-30 11:00:33
栏目: 编程语言

在 CentOS 上优化 Java 编译速度,可以从 JDK 选择、编译工具、系统资源、代码与依赖、并行与缓存 等多个方面入手。下面按优先级和可操作性给你一套实用方案。


一、JDK 与 JVM 层面优化

1. 使用较新的 JDK(强烈推荐)

  • JDK 11 / 17 / 21 比 JDK 8 编译更快
  • 新版本:
    • 更好的 javac
    • G1/ZGC 对构建工具更友好
  • 示例(CentOS):
yum install java-17-openjdk-devel

2. 给编译进程更多内存(关键)

Java 编译吃内存,默认太小会频繁 GC。

Maven

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

Gradle

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

直接 javac(少用)

javac -J-Xmx2g ...

二、构建工具优化(最常见瓶颈)

3. Maven 加速

mvn clean package -T 4 -o
  • -T 4:4 线程并行
  • -o:离线模式(已下载依赖时)

推荐配置:

mvn -T 1C clean install

1C = 每 CPU 核心 1 线程

4. Gradle 加速(比 Maven 更明显)

./gradlew build --parallel --daemon

gradle.properties:

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.jvmargs=-Xmx4g

三、系统资源与 CentOS 层面

5. 增加文件描述符限制

Java 编译会打开大量文件:

ulimit -n 65535

永久生效:

/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

6. 使用 SSD / NVMe

  • .m2 / .gradle / 源码目录放 SSD
  • 避免 NFS(极慢)

7. 关闭 SELinux(仅构建机)

setenforce 0

或

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

四、依赖与代码层面

8. 使用本地仓库缓存

~/.m2/repository
~/.gradle
  • 不要每次 clean
  • 使用 Nexus / Artifactory 加速依赖下载

9. 减少不必要的模块编译

mvn -pl module-a -am package

10. 避免超大单模块

  • 拆模块
  • 使用增量编译(Gradle 天生支持)

五、编译加速黑科技(进阶)

11. 使用 sccache(Rust 风格缓存)

export JAVA_HOME=...
sccache --start-server
export RUSTC_WRAPPER=sccache

对 javac 支持有限,但 Gradle 可用

12. 使用 Build Cache(Gradle)

org.gradle.caching=true

13. 预编译依赖(很少用)

  • 将稳定依赖打成 fat jar
  • 减少重复编译

六、快速自检清单 ✅

✅ JDK ≥ 11
✅ 内存 ≥ 4G(编译进程)
✅ 并行编译开启
✅ SSD + 高 nofile
✅ 不频繁 clean
✅ 本地仓库缓存


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

  • 用 Maven 还是 Gradle
  • CentOS 版本(7 / 8 / Stream)
  • 项目规模(模块数 / 代码量)

我可以直接给你一套 针对你项目的编译加速配置。

0 踩