Jconsole使用实例解说

Jconsole是jdk自带的一套java虚拟机执行状况监视器,它能够用来监控虚拟机的内存,线程,cpu使用情况以及相关的java进程相关的MBean,主界面例如以下:

Jconsole使用实例解说

图1

怎样连接被监控的Java虚拟机:

1. 设置被监控的Java虚拟机启动的參数,一般的情况下,会有下面三个參数,各自是:

-Dcom.sun.management.jmxremote.port=1090 

-Dcom.sun.management.jmxremote.ssl=false 

-Dcom.sun.management.jmxremote.authenticate=false

在Eclipse中,例如以下图所看到的:

Jconsole使用实例解说

图2

被监控的虚拟机启动以后,我们就能够其他电脑上通Jconsole进行远程连接。

连接的过程例如以下:

1.打开cmd,输入jconsole,就会出现jconsole控制台,例如以下所看到的:

Jconsole使用实例解说

图3

然后,我们输入要被监控的Java虚拟机的IP地址和port号,如果输入正确,连接button就上生效如果设计的监控port号为12345,连接的IP为:10.72.35.130,例如以下图所看到的:

Jconsole使用实例解说

图4

点击连接后,就会进入到图1,说明就连接成功了。

在概览这个Tab中,主要监控是的虚拟机的堆内存、线程、类以及cpu占用率;

在内存Tab中,能够选择监控的内存对象,堆内存、非堆内存、PS Eden Space、PS Survivor Space、PS Old Gen、Code Cache、PS Per Gen 当然这里监控的是Parallel Scovage算法的虚拟,假设是收集器是其他算法,可能显示的名称会有不一样,但本质上是一样的,这个有兴趣的自己能够去试试 。

像线程Lab、类Lab、VM概要Lab在这里就不作过多的介绍,以下重点说一下MBean这个Label

注冊到JMX代理的平台或者应用的MBeans,能够通过MBeans标签获取。比如,内存的MBeans如以下定义:

public interface MemoryMXBean {       
 	public MemoryUsage getHeapMemoryUsage();      
	public MemoryUsage getNonHeapMemoryUsage();       
	public int getObjectPendingFinalizationCount();      
 	public boolean     isVerbose();       
	public void        setVerbose(boolean value);      
	public void        gc();  
}
内存的MBean包含四个属性:   

   HeapMemoryUsage. 用于描写叙述当前堆内存使用情况的仅仅读属性   

   NonHeapMemoryUsage. 用于描写叙述当前的非堆内存的使用情况的仅仅读属性  

   ObjectPendingFinalizationCount.用于描写叙述有多少对象被挂起以便回收。  

   Verbose.用于动态设置GC是否跟着具体的堆栈信息,为一个布尔变量  内存的MBean支持一个操作——GC,此操作能够发送进行实时的垃圾回收请求
 Jconsole使用实例解说

MBean 标签   左边的树形结构以名字的方式展示了全部MBeans的列表。一个MBean对象的名字由一个域的名字和一串keyword属性组成。比如,JVM的平台的MBeans是在“java.lang”域下的一组,而日志的MBeans则在"java.util.logging"域下。MBean对象的名字在javax.management.ObjectName 规范中定义。  
当你在树中选中一个MBean,属性,操作,或者通知等一些信息会再右边显示出来。假设属性是可写的(属性被标志为蓝色),你能够进行设置。

Jconsole使用实例解说

MBean 操作  你能够操作在”操作”节点中列出的操作。

Jconsole使用实例解说

MBean 通知  你也能够看到由MBean发送出来的通知:默认情况,假设你不订阅通知的话,JConsole不会收到MBean发生过来的通知。你能够点击"订阅"button来堆通知进行定义,而使用"末订阅"button来取消订阅   4、监控内存   内存标签页通过读取内存系统、内存池、垃圾回收的MBean来获取对内存消耗、内存池、垃圾回收的情况的统计。