`

jconsole_tomcat 基于jdk1.5--2

    博客分类:
  • java
阅读更多

左下角列出了所以正在运行的线程。如果你在过滤器中输入一个字符,线程列表将仅显示线程名字包含你输入字符的线程。通过点击某个线程,你可以获取这个线程的相关信息。 线程的MBean标签提供了一些Thread标签没有提供有用的操作。

Xml代码 复制代码
  1. findMonitorDeadlockedThreads. 如果发生线程死锁,可以通过这个检查出来。操作返回一组死锁的线程ID.    
  2.   
  3. getThreadInfo. 返回线程的信息。包括线程的名称、堆栈信息,导致当前线程阻塞的锁,如果有的话,还返回哪儿线程持有这个锁,和这个线程信息的统计.    
  4.   
  5. getThreadCpuTime.返回指定线程消耗的CPU时间.  
findMonitorDeadlockedThreads. 如果发生线程死锁,可以通过这个检查出来。操作返回一组死锁的线程ID. 

getThreadInfo. 返回线程的信息。包括线程的名称、堆栈信息,导致当前线程阻塞的锁,如果有的话,还返回哪儿线程持有这个锁,和这个线程信息的统计. 

getThreadCpuTime.返回指定线程消耗的CPU时间.


 

 

为使用上面这些属性,可以到MBeans标签下,在MBeans树上选择Threading MBean。它列出了当前监控的JVM所有属性的操作。 

 



 

Figure 10: MBeans Tab Threading.

 

为检查你的应用是否进入死锁(例如,你的应用挂起),你可以使用findMonitorDeadlockedThreads操作。

 



 

Figure 11: Find Deadlocked Threads.

 

一旦你选择了findMonitorDeadlockedThreads按钮,将会有一个弹出窗口显示结果。在上面例子中,JConsole连接了一个存在3个死锁线程的示例应用SampleTest。如上所示,检查出ID为12,10和11的线程死锁。想查询更多的线程信息,可以使用getThreadInfo操作。线程的MBean支持getThreadInfo操作的四种形式:

 

对一个给定的线程ID,给出最深的堆栈情况
对一系列的线程ID,给出最深的堆栈情况
Of a given thread ID with no stack trace.
Of an array of thread IDs with no stack trace.

 

对应死锁情况,你一般会比较关系堆栈情况。你可以在getThreadInfo操作的第一个参数中输入死锁的线程ID和你想跟踪的堆栈深度。

 



 

Figure 12: ThreadInfo for Thread ID = 12.

双击stackTrace属性的值域将会显示一个复合对话框,你可以在堆栈中来回查看。图13,14显示了死锁线程-1的复合对话框中的第一层堆栈和第二层堆栈。

 



 Figure 13: Top Frame of the Stack Trace of DeadlockedThread-1.

 



 

Figure 14: Second Frame of the Stack Trace of DeadlockedThread-1.

线程标签页提供了一个友好的界面供查看线程的堆栈。你可以找到死锁线程的名字,使用getThreadInfo 查找线程信息。然后又可以使用线程标签页来分析死锁。

 

 

 

控制日志等级

Logging MBean定义了LoggerNames属性,用于描述日志名称。为找到你的应用的日志,可以选择在MBeans树中java.util.logging 下的Logging MBean,双击LoggerNames属性

 



 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics