java™ 平台的最新版本包含许多新的系统监视和治理特性。在本文中,三位来自 IBM Java 技术中心团队的开发人员一起带您开始使用这个 API。在快速概述了 java.lang.management 包之后,他们将指导您经历大量短小的实践场景,探测运行的 JVM 性能。
在 Java 2 平台 5.0 版引入的众多新特性中,有一个 API 可以让 Java 应用程序和答应的工具监视和治理 Java 虚拟机(JVM)和虚拟机所在的本机操作系统。在本文中,将学习这个新的平台治理 API 的功能,这个 API 包含在 java.lang.management 包中。本文将让您迅速把握在未来的 Java 平台版本中将变得更重要的一套新的强大特性。
监视和治理 5.0 虚拟机
Java 5.0 提供了监视和治理正在运行的虚拟机的新功能。开发人员和系统治理员能够监视 5.0 虚拟机的性能,而且对于某些属性还可以进行调优。以前有过使用 Java Management Extensions(JMX)经验的人都会熟悉执行这些活动的机制。通过 JMX 技术,一套需要控制的平台资源可以被当作简单的、定义良好的对象,对象的属性映射到给定资源的更低级特征上。
在平台治理 API 中,这些定义良好的对象叫做 MXBean。假如觉得 MXBean 听起来更像某种可能更熟悉的 MBean,那么就对了。这些 MXBean(或 平台 MBean)在效果上,就是封装了 5.0 平台内部特定部分的治理 bean。图 1 展示了 MXBean 在更大系统中的位置:
图 1. MXBean 提供了 Java 平台的治理接口

在运行着的 5.0 兼容的虚拟机中可以发现和定制许多不同种类的功能;例如,可以得到正在使用的即时编译系统的行为细节或者获得垃圾收集服务的进展情况。
任何 Java 应用程序只要获得需要的 bean 引用(使用我们本文中介绍的技术),就能利用平台 bean,然后调用适当的方法调用。在最简单的场景中,bean 客户机可以发现客户机所在的平台的信息。但是客户机还能监视完全独立的 JVM 的行为。这是有可能的,因为 MXBean 是一种 MBean,可以用 Java 5.0 可用的标准 JMX 服务远程地进行治理。



JConsole
bean 客户机的一个示例就是与 Java SE 5.0 SDK 一起提供的 JConsole 工具。这是一个图形界面,连接到 JVM 并显示 JVM 的信息。GUI 中的选项卡与 JVM 的特定方面相关;有 Memory、Threads 和 Classes 等选项卡。JConsole 工具还提供了一个整体的 Summary 选项卡,一个VM 选项卡(提供虚拟机启动时的环境信息)和一个 MBean 选项卡(用户可以用它更具体地监视平台 MBean 的状态)。
运行 JConsole
在命令提示符下输入 jconsole 就可以启动 JConsole(假设 SDK 的 bin 目录在当前路径中)。请输入运行要监视的 JVM 的主机名,以及侦听治理请求的端口号 —— 以及其他需要的认证细节 —— 然后点击 Connect。用默认值 localhost 和端口 0 点击 Connect,监视的是用于运行 JConsole 自己的 JVM(因为 JConsole 是一个 Java 进程)。这称作自监视模式。图 2 展示了 JConsole 的启动情况:
图 2. JConsole 启动

JConsole 在工作
到 JVM 的连接建立之后,JConsole 先显示 Summary 选项卡,如图 3 所示:
图 3. JConsole 的 Summary 选项卡

从这开始,可以选择其他选项卡。例如 Memory 选项卡,如图 4 所示,展示了 JVM 中每个内存池的使用历史:
图 4. JConsole 的 Memory 选项卡
