排查Java进程中确定哪个线程正在占用CPU的时间。
详细步骤:
-
首先确定进程的 ID ,可以使用 jps -v 或者 top 命令直接查看
jps -v
我们这里使用进程ID (PID) 11646
-
查看该进程中哪个线程占用大量 CPU,执行 top -H -p [PID] 结果如下:
top -H -p 11646
-
接下来我们将进程中的所有线程输出到一个文件中,执行:jstack [PID] > 文件名
jstack 11646 > test-jstack.txt
-
在进程中查找对应的线程 ID,执行:cat 输出文件名 | grep -i 16进制线程号
假设我们想看编号为 5331这个线程,首先将 5331线程号转成 16 进制是 14d3
cat test-jstack.txt |grep -i 14d3
结果是:
找到问题!



