资料内容:
一、Thread Dump 介绍
1.1 什么是 Thread Dump?
Thread Dump 是非常有用的诊断 Java 应用问题的工具。每一个 Java 虚拟机
都有及时生成所有线程在某一点状态的 thread-dump 的能力,虽然各个 Java
虚拟机打印的 thread dump 略有不同,但是大多都提供了当前活动线程的快
照,及 JVM 中所有 Java 线程的堆栈跟踪信息,堆栈信息一般包含完整的类名
及所执行的方法,如果可能的话还有源代码的行数。
1.2 Thread Dump 特点
1. 能在各种操作系统下使用
2. 能在各种 Java 应用服务器下使用
3. 可以在生产环境下使用而不影响系统的性能
4. 可以将问题直接定位到应用程序的代码行上
1.3 Thread Dump 能诊断的问题
1. 查找内存泄露,常见的是程序里 load 大量的数据到缓存;
2. 发现死锁线程;
1.4 如何抓取 Thread Dump
一般当服务器挂起,崩溃或者性能底下时,就需要抓取服务器的线程堆栈(Thread
Dump)用于后续的分析. 在实际运行中,往往一次 dump 的信息,还不足以
确认问题。为了反映线程状态的动态变化,需要接连多次做 threaddump,每
次间隔 10-20s,建议至少产生三次 dump 信息,如果每次 dump 都指向同
一个问题,我们才确定问题的典型性。