![](https://csdnimg.cn/release/download_crawler_static/86367607/bg3.jpg)
有关 MXBeans 和 java.lang.management API 的更详细信息,请参阅 参考资料 。
Java SE 6 中的 API 增强
Java SE 5 引入了 java.util.concurrent.locks 包,它为锁定和等待条件提供了一种框
架。这种框架有别于 Java 的内置同步支持并允许更加灵活地使用锁。
Java SE 6 为 java.lang.management 包的 java.util.concurrent.locks
添加了支持。这包括可提供锁信息的新类以及对 ThreadInfo、ThreadMXBean 和
OperatingSystemMXBean 接口的增强。
Java SE 6 引入了两个新类:
� LockInfo 包含有关锁的信息。
� MonitorInfo 扩展了 LockInfo 并包含有关对象监视锁的信息。
ThreadInfo 类利用了这些新的对象以及引入的三种新方法:
� getLockInfo() 返回 LockInfo 对象,给定线程将被阻塞以等待该对象。
� getLockedMonitors() 返回当前被给定线程锁定的 MonitorInfo 对象。
� getLockedSynchronizers() 返回 LockInfo 对象,提供当前由给定线程锁定
的可拥有的同步程序。
在 Java SE 5 中,ThreadMXBean.getThreadInfo 方法只报告线程正在等待获取的对象监
视器或是被阻塞的监视器。Java SE 6 对这些方法进行了增强,从而可以报告线程正在等待获取的
AbstractOwnableSynchronizer。
4 个新的方法被添加到 ThreadMXBean 接口中:
� isObjectMonitorUsageSupported() 将测试虚拟机是否支持对对象监视器的
使用情况进行监视。
� isSynchronizerUsageSupported() 测试虚拟机是否对可拥有的同步程序使
用情况进行监视。
� findDeadlockedThreads() 返回处于死锁状态的线程的 ID 数组。死锁线程被阻塞,
防止进入对象监视器或同步程序。
� dumpAllThreads() 为所有活动线程返回堆栈跟踪和同步信息。
最后,OperatingSystemMXBean 接口将进行更新,以包括
getSystemLoadAverage() 方法,它可以返回前一分钟的系统负载平均值。
除了提供编程支持以外,Java SE 6 还包括了一些诊断和故障排除工具,可用来检测问题并监视 JVM 资
源使用情况。接下来两节将介绍并演示其中几个可用的诊断工具。
回页首
Java 监视和管理控制台(JConsole)
Java SE 6 提供了对 JConsole 的正式支持,这是 Java 5 SE 中引入的监视和管理控制台。JConsole 使
您能够在运行时监视各种 JVM 资源统计信息。这种特性特别适用于检测死锁、锁竞争、内存泄漏和循环
线程。它可以连接到一个本地或远程 JVM 并可用来进行监视:
� 线程状态(包括相关的锁)
� 内存使用情况