博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows如何使用jstack跟踪异常代码
阅读量:6547 次
发布时间:2019-06-24

本文共 829 字,大约阅读时间需要 2 分钟。

维护服务器时,会出现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());           

                    }       

                 }    

            }

        }

  2.  

    执行上述代码,

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

  3.  

    打开任务管理,

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

  4.  

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

  5.  

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

     

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

  6.  

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

    转换为0x17E8(16进制)

  7.  

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

    找到线程号为0x17E8的线程

     

    命令:

    jstack -l  7064

  8. 8

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

     

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

  9.  

转载于:https://www.cnblogs.com/AmilyWilly/p/5981591.html

你可能感兴趣的文章
关于函数的连续性
查看>>
[置顶] HashMap HashTable HashSet区别剖析
查看>>
.NET框架设计(常被忽视的框架设计技巧)
查看>>
浮点数的内存方式以及由内存转化为浮点数
查看>>
如何对SharePoint网站进行预热(warmup)以提高响应速度
查看>>
Ibatis.Net 数据库操作(四)
查看>>
MongoVUE的使用
查看>>
Datagrid数据导出到excel文件的三种方法
查看>>
Nutch 使用总结
查看>>
Windows Phone 如何振动手机?
查看>>
转载——开阔自己的视野,勇敢的接触新知识
查看>>
ASP.NET MVC form验证
查看>>
2013第46周二今天开放中遇到的几个问题
查看>>
sql row_number 用法
查看>>
c++ 门面模式(Facade)
查看>>
SharePoint 2007 页面及用户控件
查看>>
java Socket Tcp 浏览器和服务器(二)
查看>>
zepto点透解决思路
查看>>
JavaScript Web Application summary
查看>>
hibernate 联合主键
查看>>