分类:
2008-09-09 15:19:26
? 平台的最新版本包含许多新的系统监视和管理特性。在本文中,三位来自 IBM 技术中心团队的开发人员一起带您开始使用这个 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 选项卡
请注意面板右上角的 Perform GC 按钮。这是使用平台 MBean 可以在 JVM 上执行的众多操作中的一个示例。
工作方式
到此为止所阅读的基础内容是托管 bean 或 MBean 的概念。可以把 MBean 当成资源的管理接口 的可编程表示。用更简单的术语来说,可以把它们当成围绕在受控实体周围的 Java 包装器。而用更实际的术语来说,MBean 就是 Java 类,这些类的 public 方法是根据定义良好的规则集编写的;这些规则要求把受管理的应用程序或资源的那些特征进行完整的封装。最终,资源(不论是什么以及在网络的什么位置上)的管理者为了控制的目的定位并使用对应的 MBean.
通过 API,MBean 提供以下信息,如图 5 所示:
图 5. MBean 客户机利用属性、操作和事件
[1]