Java自带的性能监控工具使用简介

对于使用命令行远程监控jvm太麻烦?那可以试试sun提供的jvisualvm.exejdk1.6自带了,可以到bin目录下找到它。

Java自带的性能监控工具使用简介_第1张图片


         什么也不说了,直接运行此exe,打开界面如下:

Java自带的性能监控工具使用简介_第2张图片(图1

         (上图1左边的数可以看到,VisualVM分为3类,Local它会自动侦测到,并显示出来)

         双击Local下的任一节点,看到右边的变化(有点像JProfiler

Java自带的性能监控工具使用简介_第3张图片

Java自带的性能监控工具使用简介_第4张图片

 看看Visual GC的界面(Java Heap的使用,一目了然)

Java自带的性能监控工具使用简介_第5张图片

   再在左边的树形窗口,右键看看(看到了Thread Dump, Heap Dump

Java自带的性能监控工具使用简介_第6张图片

 Thread Dump很快,马上就可以看到结果

Java自带的性能监控工具使用简介_第7张图片

 Heap Dump要稍花费一些时间(可以看到当前heap里对象的数量及占用的比例,做OOM很好用)

Java自带的性能监控工具使用简介_第8张图片

(图6

                   双击每一行,可以看到具体的信息

Java自带的性能监控工具使用简介_第9张图片
Java自带的性能监控工具使用简介_第10张图片

2、连接远程机器

Java自带的性能监控工具使用简介_第11张图片

(8)

3、点击OK,看到会连接到远程机器,并显示出它下面的java进程。


  到 这个时候的操作,就和上面Local的描述操作一样了。

 

最后,要注意的地方:

最好使用jdk1.6以上版本,不然visualVM很多功能不能用。

你自己也可以写一个VisualVM插件(基于NetBeans的插件体系),完成特殊的任务。


JConsole使用

一、JConsole远程监控Tomcat服务器 

  为了解决内存溢出的问题,会用到一些监视内存的工具,jconsole这个工具是jdk5.0自带的工具,所以如果你的jdk是5.0那么就不用去安装。 这个工具可以查看系统的 堆,非堆,线程,等等的一些整体的情况,从而可以判断出系统的一个大概的性能情况。 

那么配置如下:如果你是用tomcat,在 catalina.bat来设置set JAVA_OPTS=%JAVA_OPTS%  -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=7080 -Dcom.sun.management.jmxremote 

特别注意:-Dcom.sun.management.jmxremote.port=7080,这个端点是jconsole专用的,不要和你的系统的端点冲突。再启动你的应用。 

ok,配置好了后,就直接进dos命令 ,后 输入 java 回车, 再接着 输入 jconsole,它会弹出一个界面,你直接点“远程连接”的选项卡,主机就填你要监控的ip地址名,端口与 你配的-Dcom.sun.management.jmxremote.port 的端口一致就可以了,再连接就可以了。如果连接成功就会进入监控你的系统。

二、JConsole远程监控JBoss服务器 

Java 5.0采用JMX方式提供了一系列监视和管理虚拟机的API,随SDK一起发布的JConsole则是采用这些API实现监控虚拟机的使用工具。 JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。

1、环境

服务器:Redhat Linux ES 3.0 + JDK 1.5.06 + Jboss 4.0.2

                ip地址:192.168.1.5

客户机:Windows + JDK 1.5.06

2、配置

修改java虚拟机启动参数

             在%JBOSS_HOME%\bin\run.sh文件中将

            JAVA_OPTS="$JAVA_OPTS -Dprogram.name=$PROGNAME "

            修改为:

           JAVA_OPTS="$JAVA_OPTS -Dprogram.name=$PROGNAME -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

          注意:9999表示监控的端口号,确保指定的端口不被占用;可以采用netstat -an来查看已经占用的端口;配合lsof -i:portnum 来查看占用端口的具体应用程序;另外如果开启了防火墙服务,请确保端口能够透过防火墙访问;

启动JBoss服务器

             ./run.sh -b192.168.1.5,必须通过-b参数指定Jboss服务器绑定的地址; 

连接远程虚拟机

         启动%JAVA_HOME%\bin目录下的JConsole,在弹出对话框的“远程”属性页的“主机名或ip”中输入192.168.1.5,在“端口”中输入9999,选择“连接”,就能查看到远程Jboss服务器的运行情况了。


Java自带的性能监控工具使用简介_第12张图片

















你可能感兴趣的:(java,JVisualVM)