先附上jstack命令
1. 通過linux的top命令,顯示當前活躍線程數,爲CPU使用率降序排列
2. 使用jstack pid(示例:jstack 10420)命令查看java進程的堆棧狀態
3. 通過thread dump分析線程狀態
例如:jstack -F 10420
大多數情況下會基於thead dump分析當前各個線程的運行情況,如是否存在死鎖、是否存在一個線程長時間持有鎖不放等等。
在dump中,線程一般存在如下幾種狀態:
- RUNNABLE,線程處於執行中
- BLOCKED,線程被阻塞
- WAITING,線程正在等待
通過分析堆棧信息,定位線程卡在哪一個任務或操作上,從而定位到問題所在。