JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成:
一、GC相关暂停
1. 安全点(Safepoint)阻塞
- 现象:JVM暂停但无GC日志,日志显示
No GCs detected
。 - 原因:JVM等待所有线程进入安全点(如偏向锁撤销、代码反优化)。
- 排查:
- 添加JVM参数:
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1
。 - 检查日志中
vmop
列(如BulkRevokeBias
表示偏向锁撤销)。 - 解决:关闭偏向锁
-XX:-UseBiasedLocking
。
- 添加JVM参数:
2. GC停顿过长
- 分场景原因