Java高手是怎么使用jstack精确找到异常代码的

java程序CPU利用率高怎么办

请jstack神器来帮忙

 

本文介绍Linux环境下使用jstack定位问题的秘笈

  1.  
  2. 高手是怎么使用jstack精确找到异常代码的
  3.  

    将上述代码打成Jar。

    在Linux上执行上述代码

     

     

    命令:

    java -jar JavaStudy.jar

    高手是怎么使用jstack精确找到异常代码的
  4.  

    找到CPU利用率持续比较高的进程,获取进程号,此处PID为3036

     

     

    命令:

    top

    高手是怎么使用jstack精确找到异常代码的
  5.  

    找到上述进程中,CPU利用率比较高的线程号TID(十进制数),此处为3046

     

     

    命令:

    ps p 3036 -L -o pcpu,pid,tid,time,tname,cmd

    高手是怎么使用jstack精确找到异常代码的
  6.  

    将获取的线程号(十进制数)转换成十六进制,此处为0xb46

     

     

    命令:

    printf "%x\n"  3046

    高手是怎么使用jstack精确找到异常代码的
  7.  

    查看进程PID为3036中

    nid为0xb46的线程信息。

     

     

    命令:

    jstack -l 3036

    高手是怎么使用jstack精确找到异常代码的
  8.  

    总结:

    可以看到jstack命令的输出结果是相当准确的:

    显示耗CPU比较高的代码与实际情况相同,都是第13行。

     

     

    放心的用吧。

    Enjoy youself!

    高手是怎么使用jstack精确找到异常代码的
posted @ 2017-02-10 12:29  白灰  阅读(1215)  评论(0)    收藏  举报