使用jstack和TDA进行java线程dump分析
转载:http://blog.csdn.net/everlasting_188/article/details/51943095
1、jstack重点关注
命令行:jstack [-l][F] pid ,可以进行的dump文件导出
dump 文件里,值得关注的线程状态有:
死锁,Deadlock(重点关注)
执行中,Runnable
等待资源,Waiting on condition(重点关注)
等待获取监视器,Waiting on monitor entry(重点关注)
暂停,Suspended
对象等待中,Object.wait() 或 TIMED_WAITING
阻塞,Blocked(重点关注)
停止,Parked
2、工具
2.1 本地分析工具
下载地址: https://java.net/projects/tda/downloads
说明:
1、区域1:线程和monitor区域,显示总的线程,休眠线程和monitor。点log文件可以显示原始的log文件。
2、区域2:选择区域1中的对象,显示对象相关状态
3、区域3:选择区域2后,下面显示对应的状态
4、区域4:选择菜单的filter,可以增加过滤器来对对应的线程进行查看
说明:选择monitors后,选择对应的对象,可以显示对应的概要说明。点单个对象,可以看到被那个对象locked
TDA还有一个功能还可以嵌入到jconsole中,自己没有试验。
2.2在线分析工具
地址见: http://spotify.github.io/threaddump-analyzer/
3、参考文档
http://www.cnblogs.com/nexiyi/p/java_thread_jstack.html 总结的不错的一篇文章,分析方法不错。
http://blog.sina.com.cn/s/blog_855eab95010157uv.html