1 Thread Dump介绍
1.1 什么是Thread Dump
Thread Dump是非常有用的诊断Java应用问题的工具。
每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力
,虽然各个 Java虚拟机打印的thread dump略有不同,但是
大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法
,如果可能的话还有源代码的行数。
1.2 Thread Dump特点
1.3 Thread Dump抓取
一般当服务器挂起,崩溃或者性能低下时
,就需要抓取服务器的线程堆栈(Thread Dump)用于后续的分析。在实际运行中,往往一次 dump的信息,还不足以确认问题。为了反映线程状态的动态变化,
需要接连多次做thread dump,每次间隔10-20s,建议至少产生三次 dump信息
,如果每次 dump都指向同一个问题,我们才确定问题的典型性。
1.操作系统命令获取ThreadDump
注意:
2.JVM 自带的工具获取线程堆栈
2 Thread Dump分析
2.1 Thread Dump信息
1.头部信息:时间,JVM信息
2.线程INFO信息块:
3.Java thread statck trace详解:
堆栈信息应该逆向解读
:程序先执行的是第7行,然后是第6行,依次类推。
也就是说对象先上锁,锁住对象0xb3885f60,然后释放该对象锁,进入waiti