Java SE 6 对性能进行了深入研究,使用增强的工具管理和监视应用程序并且诊断常见问题。这些改进包括:
监视和管理 API 增强
正式支持增强的图形监视工具 JConsole
提供增强的 Java 虚拟机(JVM)测试工具
本文介绍了 Java SE 平台的监视和管理基本知识,并详细介绍了最新版本中的性能监视和管理增强。还介绍了 Java SE 6 平台提供的诊断和故障排除工具。
要从本文获益,您应当非常熟悉较早 Java SE 版本中引入的监视和管理功能。更多背景信息,请参阅 参考资料。
监视和管理 API
Java SE 5 中引入的 java.lang.management 包定义了 9 个 MBean,称为平台 MBean 或 MXBean(请参阅 参考资料)。每个 MXBean 封装了 JVM 的一个单独的功能区。从 Java SE 5 开始,JVM 包含了一个内置的 MBean 服务器,称为平台 MBean 服务器。MBeans 位于其中并由其管理。表 1 列出了 Java 平台中的 9 个 MXBeans:
表 1. 平台 MBean
管理接口 | 托管的资源 |
---|---|
| 类装载器 |
| 编译器 |
| 内存 |
| 线程 |
| 运行时 |
| |
| 垃圾收集器 |
| 内存管理器 |
| 内存池 |
任何应用程序都可获得并使用 JVM 提供的平台 MBean,方法是获得目标 bean 的实例并调用合适的方法。MXBean 可用来监视本地和远程 JVM 的行为并获得相关信息。
平台 MBean 可提供对信息的访问,例如装载的类的数量、JVM 正常运行时间、内存消耗量、正在运行的线程的数量,以及线程竞争统计信息。
您可以使用以下两种方式之一监视和管理 JVM 资源:
直接访问 MXBean 接口
使用 MBeanServer 接口进行间接访问
使用 MXBean 接口直接访问
您可以从一个静态工厂方法获得一个 MXBean 实例,该方法可以使您直接访问本地运行的 JVM 的 MXBean 接口。ManagementFactory 类提供静态工厂方法获得 MXBean。清单 1 演示了如何使用该工厂获得 RuntimeMXBean 并获得其中一个标准属性 VmVendor 的值:
清单 1. 直接访问 MXBean
RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean(); // Get the standard attribute "VmVendor" String vendor = mxbean.getVmVendor(); |