线程(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
分享到:
相关推荐
1. **启动JMX**: 默认情况下,JVM不开启JMX连接器。要启用JMX,需在JVM启动时添加特定的系统属性,如`-Dcom.sun.management.jmxremote`。 2. **安全配置**: 为了防止未经授权的访问,需要配置JMX安全策略,包括设置...
在这个主题中,我们将深入探讨JVM与JMX在Java环境中的交互以及它们如何增强Java应用的管理和维护能力。 **JVM详解** JVM是Java语言的核心组成部分,它实现了Java的跨平台特性。JVM的主要职责包括加载类、验证字节码...
使用JMX连接JVM实现过程详解 摘要:本文主要介绍了使用JMX连接JVM实现过程详解,通过示例代码对JMX的概念、安装、配置和使用进行了详细的介绍,为读者提供了一份详细的参考指南。 一、什么是JMX? JMX(Java ...
JConsole通过JMX接口与目标JVM进行通信,获取并展示数据。 JMX是一种标准的API,它允许开发人员在Java应用中定义、管理和操作管理资源,如系统、组件或服务。JMX的核心概念包括MBean(Managed Beans)、MBeanServer...
JConsole通过JMX接口与运行的JVM通信,收集关于内存、线程、类装载、垃圾回收、CPU使用率等信息。在源码中,你可以看到如何使用MBean(Managed Beans)和MBeanServer来注册和操作管理对象。 2. **GUI设计**:...
JConsole通过JMX(Java Management Extensions)技术来实现远程管理和监控,允许开发者和运维人员实时查看JVM的内存使用、线程状态、类加载、MBeans以及虚拟机详细信息。 1. **概述**: - **堆内存**:显示JVM堆...
### JConsole:观察与分析Java程序的运行 #### 一、JConsole简介 JConsole是自Java 5开始集成在JDK中的一个强大的性能监视和故障排除工具。它能够帮助开发者和运维人员监控Java应用程序的运行状态,并进行性能分析...
使用Jconsole对Java的内存使用情况(JVM)进行监控参照 JDK1.5提供了JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以...
通常情况下,可以通过在`JDK_HOME/bin`目录下运行`jconsole.exe`命令来启动JConsole。首次启动时,JConsole会弹出一个新连接对话框,允许用户选择连接方式。 **连接方式:** - **本地连接:**在进程中选择一个Java...
如果需要SSL连接,可设置`-Dcom.sun.management.jmxremote.ssl=false`,但默认情况下建议开启认证,以提高安全性。 在设置好这些参数后,重新启动Java应用,确保JMX服务已启动。可以使用`netstat`命令检查指定端口...
2. **连接本地应用**:默认情况下,jconsole会首先尝试连接本地的JVM。如果要监控本地应用,只需在启动应用时添加`-Dcom.sun.management.jmxremote`参数即可。 3. **连接远程应用**:要监控远程JVM,需要在应用启动...
"jconsole连接说明.txt"文件应该包含了如何使用JConsole进行连接的详细步骤和注意事项,确保按照说明正确配置JMX,以实现JConsole与JVM的有效通信。 总的来说,JConsole是Java开发和运维中不可或缺的工具,它可以...
本手册将详细介绍如何有效地使用JConsole进行JVM分析。 首先,JConsole依赖于JDK,因此在使用前确保已安装了Java Development Kit(JDK)。JConsole通常位于JDK安装目录的`bin`子目录下,例如`%JAVA_HOME%\bin\...
3. **远程JVM监控**:与jconsole类似,需要在远程JVM上启动特定的服务,并在jvisualvm中输入服务地址进行连接。 ##### Oracle JRockit Mission Control (JRMc) JRMc是专为Oracle JRockit JVM设计的一款高级监控工具...
JConsole是Java平台的标准组件,主要功能是监控Java虚拟机(JVM)的状态,它通过JMX(Java Management Extensions)接口来获取信息。JConsole可以提供实时的性能数据,帮助开发者和运维人员诊断和解决应用程序可能...
默认情况下,远程JMX连接是关闭的,需要在Java应用启动时添加特定的JVM参数来开启。 **三、主要功能模块** 1. **内存**:显示堆内存和非堆内存的使用情况,包括eden区、survivor区和老年代的详细信息,以及垃圾收集...
标题中的“使用Jconsole对java的内存使用情况(JVM)进行监控”指的是通过Jconsole工具来监测Java应用程序的内存消耗和其他关键性能指标。Jconsole是一款由JDK 1.5及更高版本提供的基于JMX(Java Management ...
而连接器则是客户端与MBeanServer交互的通道,比如JConsole和VisualVM这样的工具,它们通过JMX连接器与JVM建立连接,以可视化方式展示和操作JVM的状态。 4. **JMX客户端工具**: 如Spring Boot Actuator、JConsole和...