1.能在各种操作系统下使用
2.能在各种Java应用服务器下使用
3.可以在生产环境下使用而不影响系统的性能
4.可以将问题直接定位到应用程序的代码行上
1.3ThreadDump能诊断的问题
1.查找内存泄露,常见的是程序里load大量的数据到缓存;
2.发现死锁线程;
1.4如何抓取ThreadDump
一般当服务器挂起,崩溃或者性能底下时,就需要抓取服务器的线程堆栈(ThreadDump)用于后续的分析.在实际运行中,往往一次dump的信息,还不足以确认问题。为了反映线程状态的动态变化,需要接连多次做threaddump,每次间隔10-20s,建议至少产生三次dump信息,如果每次dump都指向同一个问题,我们才确定问题的典型性。
有很多方式可用于获取ThreadDump,下面列出一部分获取方式:
操作系统命令获取ThreadDump:
Windows:
1.转向服务器的标准输出窗口并按下Control+Break组合键,之后需要将线程堆栈复制到文件中;
UNIX/Linux:
首先查找到服务器的进程号(processid),然后获取线程堆栈.
1.ps–ef|grepjava
2.kill-3
注意:一定要谨慎,一步不慎就可能让服务器进程被杀死。kill-9命令会杀死进程。