Visualvm Working with Remote Applications

Visualvm可以用来监视java程序的运行状况,它可以监视本地或远端的java程序,但是在监视远端的程序时,必须进行设置。

1.在远端机器上安装jdk,必须是jdk;

2.在远端及其上启动jstatd;

参照http://java.sun.com/javase/6/docs/technotes/tools/share/jstatd.html,在jstatd的目录下创建一个策略文件,名字叫做jstatd.all.policy,jstatd.all.policy的内容是

grant codebase "file:${java.home}/../lib/tools.jar" {  

   permission java.security.AllPermission;  

};  

这时启动jstatd:  

cd /usr/java/bin  

./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=172.28.xx.xx &  

3.用jxm参数启动要监视的java程序,比如:  

java -Dcom.sun.management.jmxremote.port=3333 /  

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

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

     -Djava.rmi.server.hostname=172.28.xx.xx /  

     YourJavaApp &  

4.在本地使用Visualvm连接172.28.xx.xx就可以了。  

具体的步骤参见:  

http://java.sun.com/javase/6/docs/technotes/guides/visualvm/applications_remote.html  

如果出现什么问题,可参见以下的链接:
http://blogs.sun.com/jmxetc/entry/connecting_through_firewall_using_jmxechocomment-1204031889000
http://blogs.sun.com/reichart/entry/jmx_unter_debian