维护服务器时,会出现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利用率高的代码

Windows如何使用jstack跟踪异常代码的更多相关文章

  1. 利用jstack 找到异常代码

    1.top找出耗时pid进程或ps -ef |grep xxx 找出pid 2.ps p 3036 -L -o pcpu,pid,tid,time,tname,cmd  3036为pid 3.prin ...

  2. WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常

    WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常 在wpf中封装Com组件时,调用组件 ...

  3. 使用Dottrace跟踪.net代码执行时间

    当程序遇到性能问题,如IIs请求反应缓慢,.net客户端程序执行缓慢,如何分析是哪里出了问题?dottrace可以帮助.net程序跟踪出代码里每个方法的执行时间,清晰的看出是哪里执行时间过长,然后再分 ...

  4. Unrecognized Windows Sockets error: 0: JVM_Bind 异常怎么办

    Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法 java.net.SocketException: Unrecognized Window ...

  5. 让你的Windows不断重启的C语言代码

    原文:让你的Windows不断重启的C语言代码 没有写Linux的原因是因为搞不定Linux下的权限问题,而Windows下基本上使用电脑的用户都是管理员,所以钻个空了,不多说下面是代码#includ ...

  6. java-IO流-字节流-概述及分类、FileInputStream、FileOutputStream、available()方法、定义小数组、BufferedInputStream、BufferedOutputStream、flush和close方法的区别、流的标准处理异常代码

    1.IO流概述及其分类 * 1.概念      * IO流用来处理设备之间的数据传输      * Java对数据的操作是通过流的方式      * Java用于操作流的类都在IO包中      *  ...

  7. Windows 窗体设计器生成的代码

    namespace 窗体的浮动及隐藏{    partial class Form1    {        /// <summary>        /// 必需的设计器变量.      ...

  8. Android调用JNI本地方法跟踪目标代码

    正如Android调用JNI本地方法经过有点改变章所说跟踪代码是可行的,但是跟踪某些代码会出现anr,点击取消,还是不好运,有提高办法吗?回答是有(gdb还没试过,本文只讨论ida). 下面是我使用  ...

  9. windows server 2008 如何查看异常重启日志

    下面蓝队网络为大家介绍下windows server 2008 如何查看异常重启日志 开始->管理工具->时间查看器 windows日志->系统 筛选当前日志 选择Kernel-Po ...

随机推荐

  1. HDU 1710 Binary Tree Traversals(二叉树遍历)

    传送门 Description A binary tree is a finite set of vertices that is either empty or consists of a root ...

  2. Vijos 1816统计数字(计数排序)

    传送门 Description 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自 ...

  3. Markdown中的缩进

    Markdown中怎么实现段首的缩进 把输入法的半角改为全角,在Markdown文中直接空格就能实现缩进,测试时一个空格是一个汉字的距离. html中的代码:  或  -- 半个汉字的距离.  或  ...

  4. ruby 淘宝镜像

    由于国内GFW原因,导致无法安装gem库文件.故选择淘宝镜像, 如何使用? $ gem sources --remove https://rubygems.org/ $ gem sources -a ...

  5. 我所了解的JavaScript糟粕和鸡肋

    糟粕 全局变量 众所周知,全局变量在很小的程序中可能会带来方便,但随着程序变得越来大,全局变量将难以处理,全局变量将降低程序的可靠性. 在js中有3种方式定义全局变量 脱离任何函数安排一个var语句  ...

  6. 逐行读取txt文件

    header("Content-type:text/html; charset=utf-8"); $handle = fopen('test.php', 'r') or die(' ...

  7. springMVC的注解详解

    springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...

  8. Java反射机制<1>

    如果要通过一个对象找到一个类的名称,此时就需要用到反射机制(反射技术是用来做框架的,一般情况下Java私有对象不能被访问,但是暴力反射可以访问私有对象). 任何一个类如果没有明确地声明继承自哪个父类的 ...

  9. MySQL学习笔记——安装及配置环境

    1.安装的版本为mysql-5.6.24-win32.1432006610压缩版 查看教程http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345b ...

  10. C++中const 的各种用法

    C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...