使用Jvisualvm监控JVM

JDK版本必须为 : 1.6以上

测试成功的系统为 本机windws7 服务器:centos 6.2(服务器JDK一定要小于或等于你本机JDK版本)

 

首先:

# hostname -i 查看是否本机IP

 

如果是127.0.0.1 或其他,需要修改 /etc/hosts 文件将hostname绑定的IP设置为你的本机的IP

如:  192.168.16.116 yourhostname

 

yourhostname 是在 /etc/sysconfig/network  文件设置的主机名称  

如: hostname = XXXX

 

1 使用jstat 远程监控

 

在远程服务器(如ip:192.168.16.116) /home/lbe/ 目录下新建文件 jstatd.java.policy

 

内容:

 

grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
 

保存后使用命令 jstatd -J-Djava.security.policy=/home/test/jstatd.java.policy -J-Djava.rmi.server.logCalls=true   启动jstatd

 

本机到JDK目录下运行 jvisualvm , 远程连接新建连接 192.168.16.116,确定后可见运行在服务器JVM实例

 

2使用JMX连接(可监控CPU)

 

远程服务器JVM参数中添加

如Tomcat 在 catalina.sh里添加

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.16.169"

 

本机到JDK目录下运行 jvisualvm , 新建远程连接 192.168.16.116

 

 

安装JvisualVM 插件 ,选择自己需要的插件, 便于我们更准确分析问题

如 : 点击 工具(Tools)  --->  插件(Plugins) --->新窗口中选择 可用插件 --->勾选 Visual GC ,  点击 安装

(重新开启JvisualVM,验证安装)

 

 

 

 

 

ok , 下面来通过JvisualVM 监控我们的程序

 

 

图片1:查看JVM配置
使用Jvisualvm监控JVM

图片2 CPU 堆 ,类 以及线程(可以再此处 dump heap ):


使用Jvisualvm监控JVM

 

 

图片3 PerGen:

 


使用Jvisualvm监控JVM

图片4 CPU抽样, 此处可以看方法CPU占用情况

 


使用Jvisualvm监控JVM

图片 5  内存profile

 


使用Jvisualvm监控JVM

图片 6 安装插件Visual GC 图表

 


使用Jvisualvm监控JVM

 

 

出现OOM时 , 通过在JVM中设置参数 :