1、top命令定位CPU资源高的进程
2、根据进程pid定位 线程占用CPU情况,
ps p 24501 -L -o pcpu,pid,tid,time,tname,cmd
单线程最高占用 33.3% ,tid 为8917
3、将获取的线程号(十进制数)转换成十六进制,此处为 22d5
printf "%x\n" 8917
4、查看pid 为24501 的 nid为 22d5的 线程信息 jstack -l 24501
以上就精准定位到具体的类(红色框)。
======================jstack 使用说明==========================
jstack基本参数 :
-F当’jstack [-l] pid’没有相应的时候强制打印栈信息,如果直接jstack无响应时,用于强制jstack),一般情况不需要使用
-l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表,会使得JVM停顿得长久得多(可能会差很多倍,比如普通的jstack可能几毫秒和一次GC没区别,加了-l 就是近一秒的时间),-l 建议不要用。一般情况不需要使用
-m打印java和native c/c++框架的所有栈信息.可以打印JVM的堆栈,显示上Native的栈帧,一般应用排查不需要使用
-h | -help打印帮助信息
pid 需要被打印配置信息的java进程id,可以用jps查询.