论坛首页 Java企业应用论坛

不依赖jstack的java 线程dump和死锁检查工具

浏览 4210 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-10-08  

java线程dump可以使用jdk的命令“jstack  pid”完成,死锁检查可以用jconsole查看到。这两个工具是java调试的常用方法。

 

我遇到的问题是:在sles11sp3的服务上面测试,上面只有IBM J9 VM jre,默认没有装jdk,装了jdk后发现没有jstack命令,由于系统没有启动图形界面,jconsole也无法使用,最后安装了vnc server,在xterm里面打开jconsole才定位到问题。

 

于是我想做一个不依赖jdk,在J9 VM jre和oracle的 jre下都可以打印堆栈的工具。于是就有了下面的东西。

 

这个工具只能获取到当前JVM的堆栈,需要通过外围的接口输出,比如http server、web service等等。代码主要是从jconsole的源码里面弄出来的。输出的格式和jstack一致。

原理是使用ThreadMXBean获取线程栈信息,然后输出,

ThreadMXBean rtb = ManagementFactory.getThreadMXBean();....

 

 

里面的_.$是一个MessageFormater工具类方法,我使用的是org.slf4j.helpers.MessageFormatter,没有上传。

 

 

 

   发表时间:2013-10-12   最后修改:2013-10-12
这个ibm提供过一个jsp的叫threaddump.jsp,就是使用JMX。http://www-01.ibm.com/support/docview.wss?uid=swg21439803,这个页面有链接
0 请登录后投票
   发表时间:2013-10-12  
fxl545826 写道
这个ibm提供过一个jsp的叫threaddump.jsp,就是使用JMX。http://www-01.ibm.com/support/docview.wss?uid=swg21439803,这个页面有链接


也是用的ManagementFactory.getThreadMXBean(),在服务端生成的,通过jsp页面输出。
和我写的那个类似。
0 请登录后投票
   发表时间:2013-10-14  
是的,jconsole就是通过JMX的api
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics