首页 > 代码库 > Jconsole使用实例讲解

Jconsole使用实例讲解

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


图1

如何连接被监控的Java虚拟机:

1. 设置被监控的Java虚拟机启动的参数,一般的情况下,会有以下三个参数,分别是:

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

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

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

在Eclipse中,如下图所示:


图2

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

连接的步骤如下:

1.打开cmd,输入jconsole,就会出现jconsole控制台,如下所示:


图3

然后,我们输入要被监控的Java虚拟机的IP地址和端口号,如果输入正确,连接按钮就上生效假设设计的监控端口号为12345,连接的IP为:10.72.35.130,如下图所示:


图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,此操作可以发送进行实时的垃圾回收请求
 

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


MBean 操作  你可以操作在”操作”节点中列出的操作。


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

Jconsole使用实例讲解