`
江南孤鹰
  • 浏览: 55621 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jconsole与Jmx 分析JVM状况(下)

    博客分类:
  • Java
阅读更多

线程(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(long id)

  • 返回指定 id 的线程的线程信息,并带有指定堆栈追踪元素数的堆栈追踪。 getThereadInfo(long id,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 标签下的 Operating System MBean ,你可以看到平台可以执行的所有属性和操作。你可以监控任何一个属性随时间的变化——如, CPU 时间

 

 

  • 大小: 5.1 KB
分享到:
评论

相关推荐

    java jvm Jconsole

    JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,使用JConsole可以很方便的监控本地或者进程的Java应用.

    java利用JMX做出不一样的的JVM.docx

    最常用到的就是对于 JVM 的监测和管理,比如 JVM 内存、CPU 使用率、线程数、垃圾收集情况等等。另外,还可以用作日志级别的动态修改,比如 log4j 就支持 JMX 方式动态修改线上服务的日志级别。最主要的还是被用来做...

    JConsole_远程监控Tomcat_ricky

    JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。JConsole能够提供被监控虚拟机...

    Jconsole中文手册

    jconsole 的中文参考资料。JConsole 是一个基于 JMX 的 GUI 工具,用于连接正在运行的JVM,不过此 JVM 需要使用可管理的模式启动。

    jconsole源码

    jconsole – jconsole是基于Java Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了Java程序的内存使用,Heap size, 线程的状态,类的...

    zookeeperJmx.rar

    jvm监控,根据jconsole中的信息获取响应内容。zookeeper信息获取,Java实现jmx监控zookeeper,源代码下载。

    jdk-9.0.1_doc-all 最新版

    Defines the JMX graphical tool, jconsole, for monitoring and managing a running application. jdk.jdeps Defines tools for analysing dependencies in Java libraries and programs, including the jdeps, ...

    Jetty中文手册

    用JConsole监控Jetty 如何使用Jetty开发 Jetty HelloWorld教程 Jetty和Maven HelloWorld教程 Jetty(6)入门 (www.itjungle.com) Jetty Start.jar 配置Jetty 如何设置上下文(Context Path) 如何知道使用了那些jar包...

    java7帮助文档

    Tool APIs java javac javadoc jar javap JPDA JConsole Java VisualVM Java DB Security Int'l RMI IDL Deploy Monitoring Troubleshoot Scripting JVM TI JRE RIAs Java Web Start Applet / Java Plug-in ...

    JavaSE-6.0-英文手册(2008/11/30_FullUpdate)

    Tool APIs java javac javadoc apt jar javap JPDA jconsole Security Int'l RMI IDL Deploy Monitoring Troubleshoot Scripting JVM TI JRE Deployment Technologies Deployment Java Web Start Java Plug-in ...

Global site tag (gtag.js) - Google Analytics