7点微信公众号:请点这里。7点测试网QQ总群:277957570。

7点测试网

 找回密码
 注册7点

QQ登录

只需一步,快速开始

7点测试网 7点首页 7点性能分析 查看内容

Thread Dump实例演示

2012-9-21 16:59| 发布者: cjp110212| 查看: 4404| 评论: 13|原作者: cjp110212

摘要: Thread Dump实例演示

前两天有个朋友问我关于“Thread  Dump”的用法问题,由于当时比较忙,所以我的答案是两个字:百度。一天后,这个朋友来找我,说百度不到相关内容,随后,我将7d上相关帖子的链接(http://www.7dtest.com/site/thread-4499-1-1.html)给了他,半天后,这位同学又发来了信息问“直接对MSDOS窗口的程序按Ctrl-break”是什么意思。至此,俺这个村里人被这位同学的“执着”所打动,决定以俺粗浅的知识,帮其扫盲。于是,产生了以下文字。

Thread  Dump”是什么,做什么用,这个百度真有,就不多说了(让我说我也说不明白^_^ )。

   一、测试环境:本次测试为win7 + jdk6
   二、测试目的:扫盲(用thread dump日志,查看线程死锁现象)
   三、测试对象:一个很简单的JAVA类(DeadLockTest.java
   四、测试方法:编译运行“DeadLockTest”类,然后抓取“Thread  Dump”日志

执行步骤:
         1、编译运行” DeadLockTest”类,如下图:如果看到了红色圆角矩形中的内容,说明类已运行成功



2、直接在运行JAVA类的窗口按ctrl+break键(“直接对MSDOS窗口的程序按Ctrl-break”就是这个意思),如下图:


3Thread dump得到的所有内容如下:
1


2


3


4、根据“步骤3”中的三幅图分析,
1)图1中有一个“Waiting for monitor entry”可以看出,两个线程各持有一个锁,又在等待另一个锁,很明显这两个线程互相持有对方正在等待的锁。所以造成了死锁现象
2)图2中有一个“Waiting on condition”这个只是线程的主动等待,不能根据这个来说明线程有死锁情况出现
3)图3中对死锁的现象做了说明,可以看到,是“DeadLockTest.java”的39行造成的死锁现象。这样就能到相应的代码下去查看,定位问题。

备注:
         1Thread Dump中线程的三种基本状态
1)运行状态
Runnable / R / Active
    2)等待状态:在一个线程上休眠或者等待另一个线程的通知(如果你写个程序,什么都不做,就是sleep一分钟,期间你去抓Thread dump,就会看到这种情况的出现)
Waiting on monitor / Waiting on condition / CW / Waiting
     3)阻塞状态
Waiting for monitor entry / MW / Blocked
2、如果是在tomcat中抓取Thread dump日志,直接在tomcat启动窗口ctrl+break就可以了。如果想将日志输出到文件,可以修改tomcat/bin目录下的“catalina.bat”,在四个ACTION后增加“>>%CATALINA_BASE%/logs/thread_demp.out”,如下图:


同时修改bin目录下的startup.bat,如下图:


这样就可以将日志输出到logs下的thread_demp.out文件中。也可以下载相应的分析工具对其进行分析。需要说明的一点是,将startup.bat修改为以上内容后,关闭tomcat时,直接关闭DOS窗口就可以了,不用shutdown.bat
    3、建议此文与“http://www.7dtest.com/site/thread-4499-1-1.htmlzee的帖子一起看,那里会有关于Thread dump的更多内容
         BALABALA完了。附上测试类,欢迎拍砖。


DeadLockTest.zip
2

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (2 人)

发表评论

最新评论

引用 fonny 2012-9-21 17:15
图片看不到

我一般是运行jps,查到需要导出的进程id
然后jstack pid >log
引用 cjp110212 2012-9-21 17:23
fonny 发表于 2012-9-21 17:15
图片看不到

我一般是运行jps,查到需要导出的进程id

已经生成文章,文章中有全部图片,或是下载附件,其中也有图片
引用 xu1314 2012-9-21 18:11
这个真不错 顶下  
引用 Zee 2012-9-21 19:13
这个文章可以收录进「测试7刊」。
引用 奥特曼 2012-9-25 13:02
不错学习了
引用 cjp110212 2012-9-26 09:55
图已补全
引用 quiho 2012-10-8 09:55
学习了
引用 babyp1nk 2012-10-10 07:58
要是能做成小工具就更好了,做成有UI界面的,再多加一些其他功能。现在测试小工具太多了。{:soso_e163:}
引用 xiaoya 2012-10-22 14:37
我也学习了,在测试方面我还是新手,请Zee老师以后多教教我们这些新生,可以多多发表一些好的文章,让我们多多学习学习!
引用 kiven_jin_hl 2013-4-2 15:01
回去看看学习一下
引用 wxq19812000 2013-4-6 22:45
好文
引用 /ty凭海临风 2013-7-4 11:30
不错,好文!
引用 jia_1509 2014-11-13 15:06

我也学习了,

查看全部评论(13)

QQ|Archiver|手机版|小黑屋|7点测试网 ( 京ICP备09084002号

GMT+8, 2018-8-15 15:46 , Processed in 0.210108 second(s), 25 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部