使用jstack命令分析线程状态
来源:互联网 发布:知乎福利收藏夹 编辑:程序博客网 时间:2024/05/16 00:49
系统调优,看到CPU一直满的,一定是代码不符合规范了。怎样去定位代码问题,如何查看占用CPU较高的线程呢?
1.top命令
在linux环境下,可以通过top命令查看各个进程的cpu使用情况,默认按cpu使用率排序。 这样可以查看到进程的PID,我们通过PID进一步查看每个进程 。
2.通过top -Hp PID
可以查看该进程下各个线程的cpu使用情况。可以看出哪个PID的线程占了较多的cpu资源,利用jstack命令可以继续查看该线程当前的堆栈状态。
3.jstack命令
通过top命令定位到cpu占用率较高的线程之后,继续使用jstack pid命令查看当前java进程的堆栈状态。jstack命令生成的thread dump信息包含了JVM中所有存活的线程,为了分析指定线程,必须找出对应线程的调用栈。
在top命令中,已经获取到了占用cpu资源较高的线程pid,将该pid转成16进制的值,在thread dump中每个线程都有一个nid,找到对应的nid即可;隔段时间再执行一次stack命令获取thread dump,区分两份dump是否有差别。
4.通过thread dump分析线程状态
除了上述的分析,大多数情况下会基于thead dump分析当前各个线程的运行情况,如是否存在死锁、是否存在一个线程长时间持有锁不放等等。
在dump中,线程一般存在如下几种状态:
1、RUNNABLE,线程处于执行中
2、BLOCKED,线程被阻塞
3、WAITING,线程正在等待
阅读全文
0 0
- 使用jstack命令分析线程状态
- 如何使用jstack分析线程状态
- 如何使用 jstack 分析线程状态
- 如何使用jstack分析线程状态
- 如何使用jstack分析线程状态
- jstack线程状态分析
- Linux中使用top+jstack分析线程状态
- jstack 线程状态
- jstack使用和线程堆栈dump分析
- jstack线程分析
- jstack 线程dump分析
- 使用jstack查看当前进程全部线程的状态
- 读《JAVA并发编程的艺术》笔记---第二步,使用jstack查找分析程序运行时线程状态
- linux查看线程状态--jstack
- jstack命令分析
- JAVA 线程死锁,以及linux 命令和jstack 命令 查看线程死锁状态信息
- JAVA 线程死锁,以及linux 命令和jstack 命令 查看线程死锁状态信息
- 使用jstack 查看线程
- 65个面试常见问题技巧回答
- Java OOP
- Google C++ 编码风格-笔记
- web项目浏览器打开遇到问题:HTTP Status 503
- oracle什么时候应该commit(提交事务)
- 使用jstack命令分析线程状态
- 关于Activity的生命周期和onsaveinstancestate很好的两篇文章
- Windows下升级NodeJS和npm的版本
- 读取手机第一条短信内容和监听手机新收到的短信
- Android Studio添加本地或远程依赖
- Codeforces 536B Tavas and Malekas kmp找所有与前缀匹配的后缀
- Unity 中存储数据到JSON本地文件
- 暑期个人赛第二场
- mosquitto的linux下的安