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
- mport java.lang.management.ManagementFactory;
- import java.lang.management.ThreadMXBean;
- import javax.management.MBeanServerConnection;
- import javax.management.*;
- public class JmxRemote {
- public static void main(String[] args) {
- try {JMXServiceURL address = new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");
- JMXConnector connector = JMXConnectorFactory.connect(address);
- MBeanServerConnection mbs = connector.getMBeanServerConnection();
- ThreadMXBean threadBean = ManagementFactory.newPlatformMXBeanProxy(mbs, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class);
- //---取得你需要的线程相关讯息 参照API 其中上图的这些属性和API都可以通过自己写代码操作
- } catch(Exception e){
- e.printStackTrace();
- }
- }
- }
常用一些API使用说明:
findMonitorDeadlockedThreads查找死锁线程,返回的死锁线程list
其中Jconsole也提供了该操作
getThreadInfo(Jconsole)MBean支持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使用:首先输入线程ID(9)及堆栈深度(10)
点getThreadInfo弹出如下对话框
如上你会看到这个线程stackTrace的深度是7。双击黑色部分如下图可以看到堆栈信息
点“<”或者“>”按钮可以查看每层讯息
通过查看stack我们可以找到死锁线程代码信息
当然在代码中也能取得相关讯息,如下代码:
- ThreadInfo ti=threadBean.getThreadInfo(9, 10);
- StackTraceElement[] st=ti.getStackTrace();
- for(StackTraceElement el:st)
- System.out.println(el);
- 输出:
- java.net.PlainSocketImpl.socketAccept(Native Method)
- java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
- java.net.ServerSocket.implAccept(ServerSocket.java:450)
- java.net.ServerSocket.accept(ServerSocket.java:421)
- sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
- sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
- 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时间
- Jconsole与Jmx 分析JVM状况(下)
- Jconsole与Jmx 分析JVM状况(上)
- jvm-jconsole-jmx
- jmx+jconsole远程监视tomcat的jvm
- JVM内存分析以及Jconsole(一)
- JVM内存分析以及Jconsole(二)
- JConsole jvm分析工具
- jvm内存监控工具jconsole配置与内存溢出分析
- JMX与JCONSOLE (j2se5.0新特性)
- Tomcat源码分析-JMX(下)
- Java之JMX jconsole
- JVM内存状况及分析工具
- 用jmap分析jvm使用状况
- JVM监视与管理控制台之JConsole
- Jconsole监控 window下tomcat的JVM【带用户认证方式】(未完成)
- 【JMX】6. 连接MBean:JConsole
- apusic jconsole jmx connecitons url
- 使用jconsole(JMX)监控ActiveMQ
- Banana PI (香蕉派) 安装 ubuntu-core-14 最小核心的操作步骤
- hdu 1241 Oil Deposits
- 生成加密sign
- DB2函数使用总结
- Maven giving error: try-with-resources is not supported in -source 1.5
- Jconsole与Jmx 分析JVM状况(下)
- firefox 安装Selenium IDE
- 过滤器的核心API、对指定的请求拦截
- mac 上安装redis
- 关于jQuery中isNumeric 方法判断数字的深刻理解
- Gallery + ViewPager实现图片浏览器
- android面试题
- volatile与synchronized
- ogre 引擎 框架追踪 第六章 渲染流程