在 Ubuntu 上 Java 程序卡顿,原因很多,下面按常见原因 → 排查方法 → 解决思路给你一套实用清单,你可以逐项排查。
top
或更好用:
htop
看:
jstat -gcutil <pid> 1000
关注:
FGC(Full GC 次数)FGCT(Full GC 时间)如果 Full GC 频繁且时间长 → 卡顿主因
java -Xms2g -Xmx2g -jar app.jar
-XX:+UseG1GC
或 JDK17+:
-XX:+UseZGC
jstack <pid> > thread.txt
重点看:
BLOCKEDWAITINGfree -h
swapon --show
如果频繁使用 swap:
sudo swapoff -a
ulimit -n
Java 网络服务容易爆:
java.io.IOException: Too many open files
sudo vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
iostat -x 1
如果 %util 接近 100%:
java -version
建议:
✅ top 看 CPU / 内存
✅ jstat 看 GC
✅ jstack 看线程
✅ free -h 看 swap
✅ ulimit -n 看文件句柄
✅ 升级 JDK + 调整 JVM 参数
你可以补充:
top / jstat 截图或输出我可以直接帮你定位具体卡顿原因并给参数配置。