博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jstack和线程dump分析
阅读量:5882 次
发布时间:2019-06-19

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

jstack和线程dump分析

jstack定义:

jstackjava虚拟机自带的一种堆栈跟踪工具。

基本介绍:

jstack用于生成虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。

线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源

命令格式:

jstack [ option ] pid
基本参数:
-F 当’jstack [-l] pid’没有相应的时候强制打印栈信息
-l 长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.
-m 打印java和native c/c++框架的所有栈信息. -h | -help打印帮助信息
pid 需要被打印配置信息的java进程id,可以用jps工具查询

案例

C:\Users\Administrator>jstack  55162015-12-21 16:10:53Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode):"DestroyJavaVM" prio=6 tid=0x000000000027d800 nid=0x1bb0 waiting on condition [0x0000000000000000]   java.lang.Thread.State: RUNNABLE"Thread-1" prio=6 tid=0x000000000cb13800 nid=0x19ac waiting for monitor entry [0x000000000d67f000]   java.lang.Thread.State: BLOCKED (on object monitor)        at thread.DeadLockDemo$2.run(DeadLockDemo.java:35)        - waiting to lock <0x00000007d5a9be88> (a java.lang.String)        - locked <0x00000007d5a9beb8> (a java.lang.String)        at java.lang.Thread.run(Unknown Source)"Thread-0" prio=6 tid=0x000000000cb0e800 nid=0x6bc waiting for monitor entry [0x000000000d48f000]   java.lang.Thread.State: BLOCKED (on object monitor)        at thread.DeadLockDemo$1.run(DeadLockDemo.java:21)        - waiting to lock <0x00000007d5a9beb8> (a java.lang.String)        - locked <0x00000007d5a9be88> (a java.lang.String)        at java.lang.Thread.run(Unknown Source)
这里运行了一段,导致程序中的两个线程都在等待对方释放锁,造成程序死锁。

从这段代码中可以明确的看出是 DeadLockDemo.class 中的第35行,和21行出现了阻塞,然后就是要优化这个函数了。

PS : 在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生三次 dump信息,如果每次 dump都指向同一个问题,我们才确定问题的典型性。 

推荐文章:

推荐文章:

转载地址:http://nztix.baihongyu.com/

你可能感兴趣的文章
一起谈.NET技术,ASP.NET伪静态的实现及伪静态的意义
查看>>
string::c_str()、string::c_data()及string与char *的正确转换
查看>>
11G数据的hive初测试
查看>>
如何使用Core Text计算一段文本绘制在屏幕上之后的高度
查看>>
==和equals区别
查看>>
2010技术应用计划
查看>>
XML 节点类型
查看>>
驯服 Tiger: 并发集合 超越 Map、Collection、List 和 Set
查看>>
Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现...
查看>>
LeetCode – LRU Cache (Java)
查看>>
JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)...
查看>>
【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2
查看>>
在 ASP.NET MVC 中使用异步控制器
查看>>
SQL语句的执行过程
查看>>
详解Linux中Load average负载
查看>>
HTTP 协议 Cache-Control 头——性能啊~~~
查看>>
PHP遍历文件夹及子文件夹所有文件
查看>>
WinForm程序中两份mdf文件问题的解决
查看>>
程序计数器、反汇编工具
查看>>
Android N: jack server failed
查看>>