本文主要是介绍jstack 查看耗时的线程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、简介:jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:
jstack [option] pid
jstack [option] executable core
jstack [option] [server-id@]remote-hostname-or-ip
二、实例:找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息(以tomat为例)
1)ps -ef | grep tomcat
获得tomcat pid(如21251)
2)找出该进程内最耗费CPU的线程
top -Hp pid(top -Hp 21251),输出类似下图:
TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21553的线程,用printf "%x\n" 21553得到21553的十六进制值为5431
3)jstack 21251 | grep 5431
用来输出进程21251的堆栈信息,然后根据线程ID的十六进制值grep
可以看到CPU消耗在com.wzc.manage.meta.vehicle.listener.DeviceOnlineMsgListener-1这个类的Object.wait(),就可以定位到该段代码:
这篇关于jstack 查看耗时的线程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!