首页 > 编程语言 > 详细

JVM定位程序假死或cpu占用高的线程

时间:2019-05-07 11:00:53      阅读:181      评论:0      收藏:0      [点我收藏+]

linux系统:

参考:https://blog.csdn.net/qq_40197576/article/details/80287515

1>使用top命令查看占用cpu进程情况,得到java进程pid

2>使用jps命令简单的列出java进程pid与类名

3>根据java进程pid,使用pidstat定位是那些线程的原因

pidstat -p 进程id 采样间隔时间与次数 -u(-u是监控cpu) -t (-t显示线程)

看占用cpu最高的线程id

4> 使用jstack命令输出线程信息

jstack java进程pid

5>将第<3>步得到的线程id转换为16进制,与第<4>步中的线程id对比,定位到问题线程和问题类

window系统:

方法一:可以在java/jdk/bin目录中找到jconsole(java监视管理控制台),在里面查看内存,线程,类,从而找到问题

方法二:参考:https://blog.csdn.net/qq_29664253/article/details/81111717

1>通过任务管理器,找到java进程pid

2>然后把java进程导出快照,直接运行命令 jstack  -l pid >c:a.txt

3>在windows下只能查看进程的cpu占用率,要查看线程的cpu占用率要借助其他的工具,我这里用的是微软提供的 Process Explorer

4>找到java进程pid-->properties-->threads-->找到占用cpu最高的线程id

5>将第四步的线程id转换为16进制,与a.txt文件中的线程id对比,找到问题线程和问题类

JVM定位程序假死或cpu占用高的线程

原文:https://www.cnblogs.com/xc-chejj/p/10823997.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!