Jstack 查看线程状态及定位占用 cpu 较高的 java 线程

  

本文为博主原创,未经允许不得转载:

  1. Jstack 用来查看 java 指定进程所包含的 java 线程状态:

    

          

   "arthas-NettyHttpTelnetBootstrap-3-3" 线程名

  prio=5 优先级=5
  tid=0x00007f6a60019000 线程id
  nid=0x1f4b 线程对应的本地线程标识nid
  java.lang.Thread.State: RUNNABLE 线程状态

 2.使用 Jstack 定位最消耗 cpu 的线程

  2.1 使用命令top -p <pid> ,显示你的java进程的内存情况,pid是java进程号,
      

  2.2 按H,获取每个线程的内存情况

  

  2.3 找到内存和cpu占用最高的线程tid :19113,并使用 printf  "%x " 转为16进制

 

  2.4 使用 jstack 查看该进程对应线程执行的堆栈信息 

 

   

  2.5 根据堆栈信息定位消耗 cpu 的原因 

 
 
 
 
原文地址:https://www.cnblogs.com/zjdxr-up/p/14939474.html