VisualVM工具的使用

Posted yangzhixue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VisualVM工具的使用相关的知识,希望对你有一定的参考价值。

一、插件安装

 

jvisualvm是随jdk一同发布的jvm诊断工具,通过插件可以扩展很多功能,插件扩展也是jvisualvm的精华所在。
打开该工具,通过菜单“工具”—>“插件”开发以下对话框:
技术图片
在可用插件tab中选择需要安装的插件,本博文中需要用到两个插件如上图中的方框所示。

二、调整IDEA类加载速度

本部分的时间测量用到插件Visual GC。

IDEA在启动时,由于加载很多的类,占用了较长的时间,其实在加载这些类时,还有很重要的一步就是验证这些加载的类。平时我们都是在组内开发工程,可以认为这些加载的编译代码是可靠的,不需要在加载的视乎再进行字节码验证。我们可以通过参数-Xverify:none禁止字节码验证,加快IDEA的启动过程。
这个参数要加载IDEA的配置文件中,一般情况下,配置文件在个人目录下:
技术图片
修改后的配置文件如下:

-Xms512m -Xmx1500m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:MaxJavaStackTraceDepth=-1 -agentlib:yjpagent64=probe_disable=*,disablealloc,disabletracing,onlylocal,disableexceptiontelemetry,delay=10000,sessionname=IntelliJIdea2017.2 -Xverify:none

这些参数也可在jvisualvm的概述面板下看到:
技术图片

通过添加参数-Xverify:none配置后,类加载速度提高30s以上。可以通过visual vm插件面板查看:
技术图片

根据visual vm中面板的显示内容,我们还可以调整jvm堆的设置,尽情探索吧~

三:监控远程的jvm

1.监控远程的tomcat,就需要在远程的tomcat进行JMX配置,方法如下:

2、JMX方式
JMX方式是我们监控应用服务器(JBoss)常用的方法,使用JMX监控的功能不支持Visual GC。

我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.
这个工具就在JAVA_HOMEin目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面

这个工具就在JAVA_HOMEin目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面

 
从左边Applications树中可以知道,不光可以监控本地JVM运行情况, 还可以监控远程机器上的JVM运行情况.
本地监控:只要打开某个JAVA程序就会自动的加入到本地监控中.

因为本地监控无需配置, 所以这里主要介绍监控远程JVM
要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, Visualvm目前支持两种remote connection方式.
分别是jstatd和JMX方式: 这里我主要介绍的是通过JMX方式.

通过JMX连接远程机器, 需要经过下面的配置:
1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
   a.进入JAVA_HOMEjrelibmanagement目录
   b.拷贝jmxremote.password.template这个文件到当前目录, 并改名为jmxremote.password
     c.打开jmxremote.password文件,去掉 # monitorRole  QED 和 # controlRole  R&D 这两行前面的注释符号

2. 修改远程机器上需要被监控的程序的配置文件 (我这里是监控Tomcat容器内部署的应用).
   a.进入TOMCAT_HOMEin目录
     b.打开catalina.sh文件,加入如下信息:
        

JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.0.237
                                                     -Dcom.sun.management.jmxremote.port=18999
                                                     -Dcom.sun.management.jmxremote.ssl=false 
                                                     -Dcom.sun.management.jmxremote.authenticate=false"

 


   c.重启Tomcat服务.

如果是java server,则在脚本中加入 -Dcom.sun.management.jmxremote.port=10004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.136.21 即可。


3. 客户端VisualVM配置 (我客户端用的是WinXP).
     a.直接反键点击Remote,选择Add Remote Host...
     b.在弹出的界面中输入远程机器的IP地址(192.168.0.237),这个IP地址会加入到Remote节点下.
     c.反键点击这个IP地址,选择Add JMX Connection, 在弹出的界面中输入刚配置的端口号(18999), 这个连接会加入到该IP节点下.
     d.反键点击这个连接,选择Open.

此时就可以看到监控的界面, 从界面上我们可以看到CPU信息, 内存信息, 统计加载类数量,线程信息.

原文链接:https://blog.csdn.net/wzyzzu/article/details/50380511

 

以上是关于VisualVM工具的使用的主要内容,如果未能解决你的问题,请参考以下文章

VisualVM工具的使用

IDEA安装 VisualVM 及使用

如何使用 JDK 分析工具?我是不是需要查看分析工具(JConsole 或 VisualVM),直到它出现一些问题?

Java性能监控工具:VisualVM

JVM性能监测工具——VisualVM

[工具使用] visualvm 通过jmx不能连接