`
江南孤鹰
  • 浏览: 56221 次
  • 性别: 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
分享到:
评论

相关推荐

    jmx-jvm配置

    1. **启动JMX**: 默认情况下,JVM不开启JMX连接器。要启用JMX,需在JVM启动时添加特定的系统属性,如`-Dcom.sun.management.jmxremote`。 2. **安全配置**: 为了防止未经授权的访问,需要配置JMX安全策略,包括设置...

    JVM JMX java

    在这个主题中,我们将深入探讨JVM与JMX在Java环境中的交互以及它们如何增强Java应用的管理和维护能力。 **JVM详解** JVM是Java语言的核心组成部分,它实现了Java的跨平台特性。JVM的主要职责包括加载类、验证字节码...

    使用JMX连接JVM实现过程详解

    使用JMX连接JVM实现过程详解 摘要:本文主要介绍了使用JMX连接JVM实现过程详解,通过示例代码对JMX的概念、安装、配置和使用进行了详细的介绍,为读者提供了一份详细的参考指南。 一、什么是JMX? JMX(Java ...

    jconsole源码

    JConsole通过JMX接口与目标JVM进行通信,获取并展示数据。 JMX是一种标准的API,它允许开发人员在Java应用中定义、管理和操作管理资源,如系统、组件或服务。JMX的核心概念包括MBean(Managed Beans)、MBeanServer...

    JConsole Source Code(jdk1.6)

    JConsole通过JMX接口与运行的JVM通信,收集关于内存、线程、类装载、垃圾回收、CPU使用率等信息。在源码中,你可以看到如何使用MBean(Managed Beans)和MBeanServer来注册和操作管理对象。 2. **GUI设计**:...

    JConsole监控JVM

    JConsole通过JMX(Java Management Extensions)技术来实现远程管理和监控,允许开发者和运维人员实时查看JVM的内存使用、线程状态、类加载、MBeans以及虚拟机详细信息。 1. **概述**: - **堆内存**:显示JVM堆...

    JConsole(观察分析Java程序的运行)

    ### JConsole:观察与分析Java程序的运行 #### 一、JConsole简介 JConsole是自Java 5开始集成在JDK中的一个强大的性能监视和故障排除工具。它能够帮助开发者和运维人员监控Java应用程序的运行状态,并进行性能分析...

    使用Jconsole对java的内存使用情况(JVM)进行监控参照.pdf

    使用Jconsole对Java的内存使用情况(JVM)进行监控参照 JDK1.5提供了JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以...

    java jvm Jconsole

    通常情况下,可以通过在`JDK_HOME/bin`目录下运行`jconsole.exe`命令来启动JConsole。首次启动时,JConsole会弹出一个新连接对话框,允许用户选择连接方式。 **连接方式:** - **本地连接:**在进程中选择一个Java...

    使用Jconsole对java的内存使用情况(JVM)进行监控.doc

    如果需要SSL连接,可设置`-Dcom.sun.management.jmxremote.ssl=false`,但默认情况下建议开启认证,以提高安全性。 在设置好这些参数后,重新启动Java应用,确保JMX服务已启动。可以使用`netstat`命令检查指定端口...

    jconsole.jar下载

    2. **连接本地应用**:默认情况下,jconsole会首先尝试连接本地的JVM。如果要监控本地应用,只需在启动应用时添加`-Dcom.sun.management.jmxremote`参数即可。 3. **连接远程应用**:要监控远程JVM,需要在应用启动...

    wind版本jdk8以及jconsole工具.zip

    "jconsole连接说明.txt"文件应该包含了如何使用JConsole进行连接的详细步骤和注意事项,确保按照说明正确配置JMX,以实现JConsole与JVM的有效通信。 总的来说,JConsole是Java开发和运维中不可或缺的工具,它可以...

    JConsole使用手册

    本手册将详细介绍如何有效地使用JConsole进行JVM分析。 首先,JConsole依赖于JDK,因此在使用前确保已安装了Java Development Kit(JDK)。JConsole通常位于JDK安装目录的`bin`子目录下,例如`%JAVA_HOME%\bin\...

    JVM监控工具使用入门

    3. **远程JVM监控**:与jconsole类似,需要在远程JVM上启动特定的服务,并在jvisualvm中输入服务地址进行连接。 ##### Oracle JRockit Mission Control (JRMc) JRMc是专为Oracle JRockit JVM设计的一款高级监控工具...

    jconsole-1.8.0.zip

    JConsole是Java平台的标准组件,主要功能是监控Java虚拟机(JVM)的状态,它通过JMX(Java Management Extensions)接口来获取信息。JConsole可以提供实时的性能数据,帮助开发者和运维人员诊断和解决应用程序可能...

    jconsole使用

    默认情况下,远程JMX连接是关闭的,需要在Java应用启动时添加特定的JVM参数来开启。 **三、主要功能模块** 1. **内存**:显示堆内存和非堆内存的使用情况,包括eden区、survivor区和老年代的详细信息,以及垃圾收集...

    使用Jconsole对java的内存使用情况(JVM)进行监控.pdf

    标题中的“使用Jconsole对java的内存使用情况(JVM)进行监控”指的是通过Jconsole工具来监测Java应用程序的内存消耗和其他关键性能指标。Jconsole是一款由JDK 1.5及更高版本提供的基于JMX(Java Management ...

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

    而连接器则是客户端与MBeanServer交互的通道,比如JConsole和VisualVM这样的工具,它们通过JMX连接器与JVM建立连接,以可视化方式展示和操作JVM的状态。 4. **JMX客户端工具**: 如Spring Boot Actuator、JConsole和...

Global site tag (gtag.js) - Google Analytics