Linux查看线程的状态
1).htop按t(显示进程线程嵌套关系)和H(显示线程) ,然后F4过滤进程名(htop需要进行安装)
2).ps -eLf | grep java(快照,带线程命令,e是显示全部进程,L是显示线程,f全格式输出)
3).pstree -p (显示进程树,不加pid显示所有)
4).top -Hp (实时)
5).ps -T -p (快照)
推荐程度按数字从小到大。
查询具体线程的堆栈信息
1、首先需要找到对应进程的pid
利用 top 、ps 都可以
2、根据进程的pid找到进程的pid
上面几种查看线程状态的方法都可以获取到
3、将线程的pid转换为16进制数目
(1)自己口算
(2)利用命令
printf “%x” 27231(27231是线程的pid)
4、查看堆栈信息
// 27177 是进程的pid ,'6a5f'是线程pid的16进制
jstack 27177 | grep '6a5f' -C5 --color
如果知道负载很高的进程,就可以知道对应负载很高的线程,然后获取到该线程的名称与nid以及看到了该线程正在执行代码的堆栈信息
题外话
小潘的个人微信公众号【小潘学程序】,有兴趣可给个关注~
一起学习,一起成长