在 CentOS 上 Java 编译慢,通常不是单点问题,而是 JDK、系统资源、构建工具、磁盘/文件系统、依赖下载 等多方面叠加。下面给你一套从快到慢、可落地的排查与优化方案。
先别急着优化,先定位:
time mvn compile
# 或
time javac -d out src/**/*.java
观察是:
确认不是 client 模式:
java -version
看到 Server VM 才是正常的。
CentOS 自带 OpenJDK 经常偏旧:
java -version
推荐:
gcj、老 JDK 8u 老版本安装:
yum install java-17-openjdk-devel
mvn -T 4 compile
# 或
mvn -T 1C compile
mvn compile -DskipTests
确认:
ls ~/.m2/repository
避免每次拉依赖:
mvn -o compile # offline
./gradlew build --parallel
开启守护:
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.caching=true
很多 CentOS 编译慢是:
.m2 在 NFS✅ 解决:
cp -r project /localdisk/
mvn compile
mkdir /dev/shm/build
cp -r project /dev/shm/build
free -h
swapon -s
如果有 swap 在狂用:
export MAVEN_OPTS="-Xmx2g"
nproc
top
小核机器编译天然慢。
CentOS 常见:
systemctl status firewalld
systemctl status clamav
✅ 临时关闭测试:
systemctl stop clamav-daemon
Java 可:
mvn-accelerator✅ JDK ≥ 11
✅ 不在 NFS
✅ Maven 开 -T
✅ 不在 swap
✅ 依赖已缓存
✅ 跳测试
你可以直接贴:
time mvn compile 输出我可以精确告诉你卡在哪一步。