一、JMC介绍

JMC是源自JRockit JVM的一套监控和管理工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。

使用 JMC可以监视和管理 Java 应用程序,不会导致相关工具类的大幅度性能开销,它使用为 Java 虚拟机 (JVM) 的普通自适应动态优化收集的数据。

官方地址:https://www.oracle.com/java/technologies/jdk-mission-control.html

主要部分

  • JVM浏览器:显示了正在运行的 Java 应用程序及其 JVM,每个JVM实例称为一个JVM连接。JVM浏览器允许用户列出并连接到本地和远程运行的 Java 应用。它能够使用 Java 发现协议(JDP)自动地发现本地和远程运行的 Java 进程。
  • JMX 控制台:能够通过 JMX 接口管理并监控 JDK ,实时收集并显示其特征。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息,并可通过托管 Bean (MBean) 更改一些运行时属性。还可以创建在特定事件上触发的规则 (例如,如果应用程序的 CPU 占用率达到了 90%,则发送电子邮件)。
  • JFR:提供了一种从操作系统层、JVM 和 Java 应用程序层收集事件的方式。收集的事件包括线程延时事件,例如休眠(sleep)、等待(wait)、锁竞争、I/O、GC 和方法分析。
  • Java Mission Control 插件使用 Java Management Extensions (JMX) 代理连接到 JVM

二、准备条件

使用jmc对远程Java进行进行JMX监控及JFR需要具备两个前提条件,即支持JMX连接和启动JFR飞行记录。

1、支持JMX连接的配置

要配置远程Java进程支持JMX连接,需要在启动Java进程时加入以下属性:

-Dcom.sun.management.jmxremote.port=7091
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

上述配置的意义是开启JMX连接端口7091,同时配置不需要ssl安全认证方式连接(一般我们的监控的服务器都是在本地局域网中,所以没有必要配置ssl安全认证方式连接,若要配置ssl安全认证方式连接,还需要配置连接的用户名及密码等)

2、取消锁定商业功能以开启飞行记录的配置

取消锁定商业功能有两种方式:

a、使用jcmd命令解锁

使用用 VM.unlock_commercial_features 参数取消锁定商业功能,命令如下:

jcmd pid VM.unlock_commercial_features

b、应用程序启动参数中增加解锁参数

解锁参数如下:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

三、JMC的使用

1、启动JMC

java jms教程 java jmc_JVM