JStack和Top分析Java进程CPU占用率

在知道哪个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(十进制)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容