查看Java哪个线程占用CPU资源

时间:2024-05-22 16:16:34

1. 首先确定进程的 ID ,可以使用top 命令直接查看,结果如下(以PID为11281为例):

查看Java哪个线程占用CPU资源

2. 查看该进程中哪个线程占用大量 CPU,执行 top -H -p 11281 结果如下:

查看Java哪个线程占用CPU资源

我们以11373这个线程为例,首先将 11373转成 16 进制是 2c6d(可以用开源中国在线工具转换)

3. 接下来我们将进程中的所有线程输出到一个文件中,执行:jstack  11281> jstack.txt

4. 在进程中查找对应的线程 ID,执行:cat jstack.txt | grep -i 2c6d

结果是:

"cluster-ClusterId{value='5a9232f83b5d932c11711f2f', description='mongodb database'}-192.168.0.196:27017" #21 daemon prio=5 os_prio=0 tid=0x00007f5a69709800 nid=0x2c6d runnable [0x00007f5a88c6a000]

由此可以看出是mongodb 的cluster一直占用着CPU资源。