在 CentOS 上 Java 编译特别慢,通常不是 Java 本身的问题,而是系统、环境或配置层面的原因。下面按常见原因 → 表现 → 解决方式来说明。
CentOS 默认仓库里的 java-1.8.0-openjdk 可能是:
headlessdebug✅ 检查:
java -version
which java
✅ 解决:
yum remove java-1.8.0-openjdk-debug
yum install java-1.8.0-openjdk-devel
或直接使用 Oracle JDK / AdoptOpenJDK / Temurin
Java 编译、Gradle、Maven 都会用随机数:
/dev/random 会阻塞✅ 表现:
✅ 解决:
yum install rng-tools
systemctl start rngd
systemctl enable rngd
或 JVM 参数:
-Djava.security.egd=file:/dev/./urandom
CentOS 默认配置很保守
✅ Maven:
mvn -T 4 compile
✅ ~/.mavenrc:
export MAVEN_OPTS="-Xmx2g"
✅ Gradle:
./gradlew build --parallel --daemon
Java 编译:
✅ 检查:
iostat -x 1
✅ 建议:
.m2 / build 放 tmpfs(内存)mount -t tmpfs tmpfs /root/.m2
CentOS 默认开启 SELinux
✅ 临时验证:
setenforce 0
✅ 长期:
vi /etc/selinux/config
SELINUX=disabled
Java 编译吃内存
✅ 检查:
free -h
top
✅ 建议:
sysctl vm.swappiness=10
Maven 拉依赖时卡死
✅ 表现:
Downloading✅ 解决:
vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6=1
time javac Main.java
javac 本身就慢 → JVM / 系统问题mvn / gradle 慢 → 工具 / 网络问题| 原因 | 是否常见 |
|---|---|
| OpenJDK debug 版 | ✅ 非常常见 |
| /dev/random 阻塞 | ✅ 云服务器 |
| SELinux | ✅ |
| 默认低内存限制 | ✅ |
| HDD 云盘 | ✅ |
java -version
free -h
iostat -x 1
setenforce 0
systemctl start rngd
mvn -T 4 -o compile
如果你愿意,可以告诉我:
我可以直接给你针对性优化方案。