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(),就可以定位到该段代码:


猜你喜欢

转载自blog.csdn.net/u010325193/article/details/80902316
今日推荐