线程(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
分享到:
相关推荐
JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,使用JConsole可以很方便的监控本地或者进程的Java应用.
最常用到的就是对于 JVM 的监测和管理,比如 JVM 内存、CPU 使用率、线程数、垃圾收集情况等等。另外,还可以用作日志级别的动态修改,比如 log4j 就支持 JMX 方式动态修改线上服务的日志级别。最主要的还是被用来做...
JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。JConsole能够提供被监控虚拟机...
jconsole 的中文参考资料。JConsole 是一个基于 JMX 的 GUI 工具,用于连接正在运行的JVM,不过此 JVM 需要使用可管理的模式启动。
jconsole – jconsole是基于Java Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了Java程序的内存使用,Heap size, 线程的状态,类的...
jvm监控,根据jconsole中的信息获取响应内容。zookeeper信息获取,Java实现jmx监控zookeeper,源代码下载。
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, ...
用JConsole监控Jetty 如何使用Jetty开发 Jetty HelloWorld教程 Jetty和Maven HelloWorld教程 Jetty(6)入门 (www.itjungle.com) Jetty Start.jar 配置Jetty 如何设置上下文(Context Path) 如何知道使用了那些jar包...
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 ...
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 ...