在 Ubuntu 上运行 Java 慢,通常可以从系统环境、JVM 参数、Java 版本、程序本身、资源占用几个方向来排查和优化。下面给你一套实用思路:
启动慢还是运行慢?
用工具看瓶颈
top
htop
jstack <pid>
jstat -gc <pid> 1000
java -version
推荐:
-server(新版默认)安装:
sudo apt install openjdk-17-jdk
systemctl list-unit-files --type=service
禁用不必要服务,释放 CPU / 内存
ulimit -n
如太小(如 1024),编辑:
sudo vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
java -Xms512m -Xmx2g -jar app.jar
避免频繁扩容
Java 17+:
-XX:+UseG1GC
或大内存:
-XX:+UseZGC
查看 GC:
jstat -gcutil <pid> 1000
String + 循环INFO 足够lsblk
HDD 上 Java IO 会明显慢
java -Djava.io.tmpdir=/dev/shm -jar app.jar
✅ 熵池不足(随机数慢)
cat /proc/sys/kernel/random/entropy_avail
如果很小:
sudo apt install haveged
✅ IPv6 导致连接慢
java -Djava.net.preferIPv4Stack=true -jar app.jar
✅ 时间同步问题
timedatectl status
-Xms -Xmx如果你愿意,可以告诉我:
我可以给你针对性的参数和命令。