在知道哪个Java进程CPU占用率过高以后:
1.使用命令 jstack PID 命令打印出CPU占用过高进程的线程栈,例如:
jstack 2797 > 2797.txt (注意:jstack是用16进程数来表示线程号)
2.使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高. 比如:
top -H -p 2797
注意:线程id为2919(10进制) 转换成十六进制 B67(十六进制)
3. 查找线程
2797.txt 查找 B67(十六进制)
图中绿色文字即为线程id值
nid : 对应的Linux操作系统下的tid线程号,也就是前面转化的16进制数字
tid: 这个应该是jvm的jmm内存规范中的唯一地址定位
源码:
4. 其它
或者也可以采用ps命令
ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid 来查看繁忙的线程信息
ps -mp 2797 -o THREAD,tid,time
tid:2919(十进制)