zoukankan      html  css  js  c++  java
  • Windows如何使用jstack跟踪异常代码

    维护服务器时,会出现java进程在CPU、内存、硬盘上总是出现异常情况。

    如何找到是哪些代码出现这些异常呢?

    本文使用jstack来实现这个需求

    工具/原料

     
    • java
    • jstack
    • ProcessExplorer
    • procexp

    方法/步骤

     
    1.  

      先写一段代码来模拟一个耗CPU的线程

      代码:

      package chapter1;

      public class FindJavaThreadInTaskManager {    

          public static void main(String[] args) {        

              Thread thread = new Thread(new Worker());        

              thread.start();    

          }    

          static class Worker implements Runnable {        

              @Override        

              public void run() {            

                  while (true) {                

                      System.out.println("Thread Name:" + Thread.currentThread().getName());           

                      }       

                   }    

              }

          }

      Windows如何使用jstack跟踪异常代码
    2.  

      执行上述代码,

      模拟一个CPU和IO利用率都高线程

      Windows如何使用jstack跟踪异常代码
    3.  

      打开任务管理,

      此例中,CPU利用率比较高java进程ID为7064

      Windows如何使用jstack跟踪异常代码
    4.  

      使用ProcessExplorer找到ID号为7064的进程

      Windows如何使用jstack跟踪异常代码
    5.  

      使用ProcessExplorer查看进程ID为7064的属性信息

      在Thread标签找到CPU利用率的线程信息,TID为6120(10进制)

      Windows如何使用jstack跟踪异常代码
      Windows如何使用jstack跟踪异常代码
    6.  

      将CPU利用率高的线程ID 6120(10进制)

      转换为0x17E8(16进制)

      Windows如何使用jstack跟踪异常代码
      Windows如何使用jstack跟踪异常代码
    7.  

      使用jstack查看进程7064的线程信息。

      找到线程号为0x17E8的线程

      命令:

      jstack -l  7064

      Windows如何使用jstack跟踪异常代码
    8. 8

      查看第13行的代码信息,与实际情况相符。

      至此,找到引发CPU利用率高的代码

      Windows如何使用jstack跟踪异常代码
  • 相关阅读:
    Linux 管道 管线
    中国网络拓扑图(主干网、地区网、主节点一览表)
    C++中的STL中map用法详解
    Git 丢弃本地修改
    Linux下指定so动态库的加载路径的5种方法!!!
    C++中string append函数的使用与字符串拼接
    C++执行shell命令linux
    Linux动态库.so文件加载搜索路径详解
    FFmpeg打印日志函数分析
    linux C/C++中调用shell命令和运行shell脚本
  • 原文地址:https://www.cnblogs.com/AmilyWilly/p/5981591.html
Copyright © 2011-2022 走看看