下载和安装:如果大家还是没有找到jvisualvm,请从这个链接下载。
有了jvisualvm.exe, 我们先来看下jvisualvm的用法。 他是一个gui(图形界面)的工具,所以上手应该会很快。
官网上关于jvisualvm的用法介绍 http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html
简单来说,我们不需要传递任何参数就可以启动jvisualvm。
我们可以把jvisualvm也放到jdk的path里, 然后加到环境的path里。 这时候我们在windows的运行或者cmd里运行
jvisualvm就可以启动该工具了。 或者我们直接双击点击该软件。
使用:
启动后我们会看到这个画面。
这时候我们看到左边的应用程序栏,就能看到本地,远程,快照3个分类。 其中本地就是指本地的jvm,当前可以看到
visualvm(就是本身自己这个程序), 远程里还没有,因为我们还没有添加。
如果要添加一个远程jvm,对其进行监控,我们需要对远程的jvm进行一些参数配置(例如一个jboss,添加如下启动参数在
jboss的启动配置文件里。)
-Djava.rmi.server.hostname=$server_host -Dcom.sun.management.jmxremote.port=$port
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
, 这样启动后的jvm,能够监听指定端口,这样我们用
jvisualvm就通过这个端口来对jvm进行monitor。 启动jvm后,我们用netstat -ln来看下, 这个端口是否已经处于监听状
态。
如果远端的jvm已经监听了jmxremote port后。我们就可以用jvisualvm进行添加并监控了。
右键选择远程,点击添加远程主机。然后写下主机名称和显示名称(主机请填写ip地址,至于显示名称根据需要来写)。
高级设置里是配置jstatd连接,我们可以暂时先不管。
添加成功后我们就看到了这张图。
右键选择我们已经添加的主机,然后点击“添加jmx连接”。这时会弹出这样的窗口
因为我们之前加的jvm启动参数是 authenticate=false,所以这里我们不需要使用安全凭证, ip和端口,只要写我们之前
指定的即可。这时候我们就添加成功了。
双击我们添加成功后的jmx连接,右边就会出来一个窗口。
有4个tag标签,分别是 概述(系统的属性,jvm参数,以及线程的一些基本状态), 监视(cpu,线程,堆,内存监控数据,相比较jconsole漂亮很多) ,线程(可以查看每个线程的状态信息,和jprofiler差不多), 抽样(可以抽样一段时间,进行cpu和内存 分析,非常棒的是可以过滤分析哪些packet,或者指定只分析哪些packet,非常利于定位问题)。
相比较jconsole而言, jvisualvm 提供了更漂亮的图形数据, 能够和jprofiler一样抽样检查代码级别的cpu和内存问题。 非常棒且免费的工具。