Jconsole与Jmx 分析JVM状况(下)

来源:互联网 发布:wp10 软件开发 编辑:程序博客网 时间:2024/06/05 02:56

线程(ThreadMXBean

Jconsole画面取得线程画面如下:

左下角列出了所以正在运行的线程。通过点击某个线程,右下脚可以看到这个线程的相关信息。

 

Mean中提供ThreadMXBean相关属性和操作如下

详细个属性说明请看http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/java/lang/management/ThreadMXBean.html

代码中取得ThreadMXBean

Java代码  收藏代码
  1. mport java.lang.management.ManagementFactory;  
  2. import java.lang.management.ThreadMXBean;  
  3. import javax.management.MBeanServerConnection;  
  4. import javax.management.*;  
  5. public class JmxRemote {  
  6.     public static void main(String[] args) {  
  7.         try {JMXServiceURL address =  new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");  
  8.             JMXConnector connector = JMXConnectorFactory.connect(address);  
  9.             MBeanServerConnection mbs = connector.getMBeanServerConnection();  
  10. ThreadMXBean threadBean = ManagementFactory.newPlatformMXBeanProxy(mbs, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class);        
  11.             //---取得你需要的线程相关讯息 参照API 其中上图的这些属性和API都可以通过自己写代码操作  
  12.         } catch(Exception e){  
  13.             e.printStackTrace();  
  14.         }  
  15. }  
  16. }  

常用一些API使用说明:

 

findMonitorDeadlockedThreads查找死锁线程,返回的死锁线程list

其中Jconsole也提供了该操作

getThreadInfoJconsoleMBean支持getThreadInfo操作的两种形式,

  • 返回指定id的不具有堆栈跟踪的线程的线程信息。getThreadInfo(longid)

  • 返回指定id的线程的线程信息,并带有指定堆栈追踪元素数的堆栈追踪。getThereadInfo(longid,int MaxDepth)

实际代码中还提供另外三种取得线程讯息操作

  • 返回其ID在输入数组ids中的每个线程的线程信息,并带有指定堆栈追踪元素数的堆栈追踪。getThreadInfo(long[] ids,int maxDepth)

  •  返回每个线程的线程信息,线程ID位于输入数组ids中,带有堆栈跟踪和同步信息。getThreadInfo(long[] ids,boolean lockedMonitors, boolean lockedSynchronizers)

  • 返回其ID在输出数组ids中的每个线程的线程信息,这些线程不具有堆栈跟踪。getThreadInfo(long[] ids)

例如:Jconsole使用:首先输入线程ID9)及堆栈深度(10

getThreadInfo弹出如下对话框

如上你会看到这个线程stackTrace的深度是7。双击黑色部分如下图可以看到堆栈信息

 

 

点“<”或者“>”按钮可以查看每层讯息

 

通过查看stack我们可以找到死锁线程代码信息

当然在代码中也能取得相关讯息,如下代码:

Java代码  收藏代码
  1. ThreadInfo ti=threadBean.getThreadInfo(910);  
  2. StackTraceElement[] st=ti.getStackTrace();  
  3. for(StackTraceElement el:st)  
  4. System.out.println(el);  
  5. 输出:  
  6. java.net.PlainSocketImpl.socketAccept(Native Method)  
  7. java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)  
  8. java.net.ServerSocket.implAccept(ServerSocket.java:450)  
  9. java.net.ServerSocket.accept(ServerSocket.java:421)  
  10. sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)  
  11. sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)  
  12. java.lang.Thread.run(Thread.java:619)  

获取操作系统资源信息(MemoryManagerMXBean

MemoryManagerMXBean提供查看操作系统相关讯息,具体API请参考

http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/java/lang/management/OperatingSystemMXBean.html

当打开MBeans标签下的OperatingSystem MBean,你可以看到平台可以执行的所有属性和操作。你可以监控任何一个属性随时间的变化——如,CPU时间

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 笔记本cpu核显坏了怎么办 粘贴大量文件卡住怎么办 mx不能播放rv40怎么办 迷你世界联机卡怎么办 绝地求生被火瓶烧了怎么办 win8电脑太卡怎么办 win8关机没反应怎么办 arma3没子弹了怎么办 g350d柴油冻了怎么办 散热硅胶干了怎么办 电脑打不开pdf文件怎么办 文件变成快捷方式打不开怎么办 ai文件打不开了怎么办 电脑下载了病毒软件怎么办 打嗝停不下来怎么办 咳嗽停不下来怎么办 电动机停不下来怎么办 电脑所有程序都打不开怎么办 机顶盒画面卡顿怎么办 电脑画面卡顿怎么办 鞋舌头跑偏怎么办 球球大作战老卡怎么办 孩子被打却不敢还手怎么办? 自卫砍伤了人怎么办 系统还原节点黑屏了怎么办 我惹事了要被打怎么办 诛仙宠物太多怎么办 笔记本玩lolfps低怎么办 lol延迟有42怎么办 软件安装后黑屏怎么办 汽车脚垫翘边怎么办 晴季寿司会员怎么办 理财产品跑路了怎么办 宝宝足跟血异常怎么办 孩子足跟血异常怎么办 打印机显示用户干预怎么办 打印机脱机状态怎么办win10 电脑打印机显示脱机怎么办 佳能打印机显示脱机怎么办 汽车说明书丢了怎么办 oppo手机刷机后内存不足怎么办