Jstack方法
2016-03-31 17:02
609 查看
维护服务器时,会出现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
查看第13行的代码信息,与实际情况相符。
至此,找到引发CPU利用率高的代码
如何找到是哪些代码出现这些异常呢?
本文使用jstack来实现这个需求
工具/原料
javajstack
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
查看第13行的代码信息,与实际情况相符。
至此,找到引发CPU利用率高的代码
相关文章推荐
- js函数判断字符串的长度
- json的简单使用
- Javascript模块化编程(二):AMD规范
- Javascript模块化编程(一):模块的写法
- JavaScript的Tab切换
- javascript 模板引擎:artTemplate-3.0
- 【BZOJ1016】[JSOI2008]最小生成树计数【最小生成树】【搜索】
- 笔记 Json各种格式解析
- JS面向对象的程序设计
- JS input 文本框事件
- jsp page 提示[page] is not properly terminated
- Observer Pattern in JavaScript II scope declared when subscribe()
- jsp#1简单jsp开发
- jstl中的<fmt:formatNumber>标签
- 关于JavaScript命名空间的一些心得
- [原创作品]Javascript内存管理机制
- phantomjs 安装和试用
- Rhino -- 基于java的javascript实现
- js中关于date()的扩展
- jsp入门学习