CentOS 上编译 Java(尤其是大型项目)速度慢,通常不是单一原因,而是CPU、内存、磁盘 IO、JDK、构建工具配置等多个因素叠加。下面按最常见 → 进阶 → 高级给你一套排查和加速方案。
编译 Java 时 Maven / Gradle / javac 都很吃内存。
Maven
export MAVEN_OPTS="-Xmx4g -Xms2g"
Gradle
export GRADLE_OPTS="-Xmx4g -Xms2g"
服务器建议:
默认可能只用 1 个 CPU 核心。
mvn -T 4 clean package
mvn -T 1C clean package # 每个 CPU 一个线程
gradle build --parallel
老 JDK(如 JDK 7/8)比新 JDK 慢很多。
✅ 推荐:
查看:
java -version
编译会产生大量 .class、临时文件。
iostat -x 1
mvn clean package -DskipTests -Dmaven.javadoc.skip=true
确保:
~/.m2/repository
不在慢磁盘上。
gradle.properties
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx4g
gradle build --parallel --incremental
swap 会严重拖慢编译。
free -h
临时关闭:
sudo swapoff -a
永久关闭:
sudo vi /etc/fstab
# 注释 swap 行
Java 编译会打开大量文件。
ulimit -n
建议:
ulimit -n 65535
永久:
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
如果是云服务器:
只编译需要的模块:
mvn -pl module-name -am package
如 Lombok、MapStruct、AutoService。
✅ 确保:
top
htop
mvn -X clean package
如果是:
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
8C16G CentOS 编译 Java 推荐:
export MAVEN_OPTS="-Xmx8g -Xms4g"
mvn clean package -T 1C -DskipTests
Gradle:
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx8g
你可以直接贴:
我可以给你针对性最优参数,甚至直接给你 systemd / Docker / CI 编译优化方案。