使用jstack精确找到异常代码的
2017-03-30 20:36
253 查看
1. java代码如下:
package t5;
public class TestThread {
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. 打包成test.jar,放到linux上
3. 运行test.jar,使用命令:java -cp test.jar t5.TestThread
4. 找到CPU利用率持续比较高的进程, 命令:top
5. 找到CPU使用率较高的线程ID:
命令:ps p 16480 -L -o pcpu,pid,tid,time,tname,cmd
此处为:16480
6. 将获取的线程号(十进制数)转换成十六进制
printf "%x\n" 16498
结果:4072
7. 查看进程16480中的信息:
命令:jstack -l 16480 > 16480.pid
输出结果到16480.pid文件中
使用vi查看16480.pid文件:
可以看到在代码的第13行有问题。
package t5;
public class TestThread {
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. 打包成test.jar,放到linux上
3. 运行test.jar,使用命令:java -cp test.jar t5.TestThread
4. 找到CPU利用率持续比较高的进程, 命令:top
5. 找到CPU使用率较高的线程ID:
命令:ps p 16480 -L -o pcpu,pid,tid,time,tname,cmd
此处为:16480
6. 将获取的线程号(十进制数)转换成十六进制
printf "%x\n" 16498
结果:4072
7. 查看进程16480中的信息:
命令:jstack -l 16480 > 16480.pid
输出结果到16480.pid文件中
使用vi查看16480.pid文件:
可以看到在代码的第13行有问题。
相关文章推荐
- 使用jstack精确找到异常代码实例详解
- 怎么使用jstack精确找到异常代码
- 用top,ps,jstack找到java线程异常代码
- Windows如何使用jstack跟踪异常代码
- 看大神是如何使用jstack跟踪异常代码
- 在Eclipse中使用Java代码调用ant出现的异常
- 使用MediaPlayer出现The surface has been released 异常处理方法,附代码
- Windows Phone 处理 MessageBox导致的应用异常退出以及使用代码方式退出应用 推荐
- 使用 Stopwatch 精确测试代码运行时间
- 编写高质量代码改善C#程序的157个建议——建议60:重新引发异常时使用Inner Exception
- 编写高质量代码改善C#程序的157个建议[用抛异常替代返回错误、不要在不恰当的场合下引发异常、重新引发异常时使用inner Exception]
- .“在JAVA中,异常子类必须在它们任何父类之前使用,因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。这样,后面运行子类的catch语句将永远不会到达。而且,Java中不能到达的代码是一个错误。”
- try与finally一起使用时,try语句发生异常,如何继续执行代码到finally语句块
- 解决在EasyUI中使用百度地图出现不居中和坐标图标显示异常的问题(红色代码部分)
- 在使用gridview/listView中只报空指针,没有说我的代码具体哪里空的异常
- MVC过滤器使用案例:统一处理异常顺道精简代码
- 简单的代码片段性能测试 -- 顺便测一下正则和异常的性能(使用循环测试做比较)
- VC6.0 通过崩溃地址中找到异常代码行
- 如何使用MAP文件找到程序崩溃时源码是哪行异常
- MVC过滤器使用案例:统一处理异常顺道精简代码