欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

jstack和线程dump实例解析

时间:2021-12-09 18:06:36|栏目:JAVA代码|点击:

jstack定义:

jstack是Java虚拟机自带的一种堆栈跟踪工具。

基本介绍:

jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前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 5516
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode):
 
"DestroyJavaVM" prio=6 tid=0x000000000027d800 nid=0x1bb0 waiting on condition [0
x0000000000000000]
 java.lang.Thread.State: RUNNABLE
 
"Thread-1" prio=6 tid=0x000000000cb13800 nid=0x19ac waiting for monitor entry [0
x000000000d67f000]
 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 [0x
000000000d48f000]
 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)

这里运行了一段死锁code,导致程序中的两个线程都在等待对方释放锁,造成程序死锁。

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

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

总结

以上就是本文关于jstack和线程dump实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

上一篇:浅谈JSP与Servlet传值及对比(总结)

栏    目:JAVA代码

下一篇:SpringBoot项目实现关闭数据库配置和springSecurity

本文标题:jstack和线程dump实例解析

本文地址:http://www.codeinn.net/misctech/186262.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有