2.2 Java虚拟机的监控和管理

2016-02-22 23:28:58 9,074 2


JMX技术也可以用于监控和管理Java虚拟机。
        Java虚拟机具有内置的监测功能,使得你能够通 过JMX技术来监控和管理它。这些内置的功能通常叫做JVM的拆箱即用式的(out-of-the-box)管理工具。为了监控和管理JVM的不同方 面,JVM包含了一个平台MBean server以及一些特殊的MXBeans,供遵守JMX规范的管理程序使用。


Platform MXBeans和PlatformMBean Server

        platform MXBeans 是由Java SE平台提供的一组MXBeans,用于监控和管理JVM和Java Runtime Environment (JRE)的其它组件。每个platform MXBean都封装了一部分JVM功能,比如class-loading system系统、just-in-time (JIT)编译系统、垃圾回收器等等。可 以通过使用一个兼容JMX规范的监控与管理工具来显示这些MXBeans,以及与这些MXBeans进行交互,这样使得你能够监控和管理不同的虚拟机功 能。其中一个这样的监控与管理工具就是Java SE平台的JConsole graphical user interface (GUI)。

        Java SE platform提供了一个标准的platform MBean server,这些platform MXBeans就注册在其中。平台MBean server也可以注册任何其它你想要创建的MBeans。(提示: JVM启动的时候,会启动platform MBean server!应用程序可以启动自己的MBean Server,也可以使用JVM默认启动的platfomr MBean Server)


测试案例:

public class HelloJMX {
    public static void main(String[] args) throws InterruptedException {
        Thread.sleep(Long.MAX_VALUE);
    }
}

运行此程序


JConsole

        Java SE平台包含了JConsole这个监控与管理工具,它兼容JMX规范。JConsole使用JVM的extensive instrumentation(也就是platform MXBeans)来提供运行于Java平台中的应用程序的性能与资源消耗信息。

Out-of-the-Box Management in Action

        因为标准的实现了JMX技术的监控和管理功能是内置于Java SE平台中的,因此你可以直接使用它们,而不需要写一行与JMX API相关的代码。你可以启动一个Java应用程序,然后用JConsolel来监控它。

用JConsole监控应用程序

        该过程展示了如何监控Notepad Java程序。在版本6之前的Java SE平台中,需要通过用下面的选项 来启动 你想要用JConsole进行监控的应用程序。

-Dcom.sun.management.jmxremote

然而,Java SE 6 平台提供的那个版本的JConsole可以粘附(attach)到任何支持粘附API的本地应用程序上。换言之,任何在Java SE 6 HotSpot VM中启动的应用程序 都会被JConsole自动探测到,不需要用上面的命令行选项来启动该应用程序。

1、启动Jconsole

Image.png

输入jconsole之后,可以看到:

Image.png

2、在新连接对话框中,在本地进程(Local Process)列表中,选择com.tianshouzhi.jmx.HelloJMX,然后点击 Connect 按钮

    当JConsole打开的时候,呈现在你眼前的是关于该HelloJMX的监控与管理的一个概览。比如,你可以查看该应用程序所消耗的heap memory的数量、当前应用程序的线程数量 以及该应用程序所消耗的CPU量。

Image.png

3. 点击JConsole中的不同标签页。
每个标签页都展示了HelloJMX所处的JVM的不同功能领域的更详细的信息。所有这些展示的信息,都是通过不同的JMX MXBeans获取,本教程已经提到过。所有的platform MXBeans都被显示在MBeans标签页中。例如在Thread Tab页中,我们看到Main线程:

Image.png

4. 要想关闭JConsole,请选择 Connection -> Exit。



上一篇:2.1 JMX技术架构 下一篇:3.0 MBeans介绍