在 CentOS 上Java 运行/启动很慢,通常不是 Java 本身的问题,而是系统环境导致。下面按最常见 → 较少见的原因给你梳理,并给出排查和解决办法。
Java 启动时会大量使用随机数(SSL、UUID、SecureRandom)。
/dev/random✅ 验证:
cat /proc/sys/kernel/random/entropy_avail
如果小于 200,就会很慢。
✅ 解决:
yum install -y haveged
systemctl enable haveged
systemctl start haveged
或 JVM 参数(临时):
-Djava.security.egd=file:/dev/./urandom
Java 在建立连接时会做 DNS 反向解析。
如果 /etc/resolv.conf 配置错误或 DNS 不通:
✅ 检查:
nslookup your-hostname
✅ 解决:
/etc/hosts127.0.0.1 localhost your-hostname
-Dsun.net.inetaddr.ttl=0
即使不是 GUI 程序,日志、图表、报表也可能触发字体查找。
✅ 解决:
yum install -y fontconfig
Java 很吃内存,CentOS 开 SWAP 后会非常慢。
✅ 检查:
free -h
top
✅ 建议:
swapoff -a
尤其是:
✅ 检查:
iostat -x 1
首次启动 JIT 编译慢。
✅ 使用:
-XX:+TieredCompilation
✅ 建议:
-XX:+UseG1GC
# 1. 熵
cat /proc/sys/kernel/random/entropy_avail
# 2. hosts
cat /etc/hosts
# 3. DNS
cat /etc/resolv.conf
# 4. Java 版本
java -version
# 5. 启动时间
time java -version
你可以告诉我:
我可以直接给你针对性优化方案。