数码鹭岛论坛

标题: 如何使用JVisualVM进行性能分析 [打印本页]

作者: 翔子    时间: 2014-11-23 22:03
标题: 如何使用JVisualVM进行性能分析
地址:[url=https://visualvm.dev.java.net/]https://visualvm.dev.java.net/
连接
1、本地机器的程序直接可以监听到
2、远程机器的程序需要加上JVM参数
-Dcom.sun.management.jmxremote= true
-Dcom.sun.management.jmxremote.port= 9090
-Dcom.sun.management.jmxremote.ssl= false
-Dcom.sun.management.jmxremote.authenticate= false

备注:另外需要检查
hostname –i

看解析出来是否为本地的IP,如是127.0.0.1或者IP为多个IP中之一,则其他的IP无效,会连接不上。
这里有个分析案例,利用jvisualvm分析tomcat的问题:
[url=http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems]http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

插件安装
tools->plugin->Available Plugin 会有值得安装的插件,如:[url=http://wiki.uuwatch.com:8081/pages/createpage.action?spaceKey=dev&title=VisualGC&linkCreation=true&fromPageId=22315524]VisualGC JConsole


插件列表:[url=https://visualvm.dev.java.net/plugins.html]https://visualvm.dev.java.net/plugins.html

注意:上面提供的端口配置有些麻烦,不如直接这样做:
要使用 [url=http://wiki.uuwatch.com:8081/pages/createpage.action?spaceKey=dev&title=VisualGC]VisualGC 必须在远程机上启动jstatd代理程序,否则会显示 “not supported for this jvm” 错误
而启动 jstatd 时会有一个权限问题,需要做如下修改:
nano /opt/sun-jdk-1.6.0.26/jre/lib/security/java.policy  

增加下列行
grant codebase "file:${java.home}/../lib/tools.jar" {  
permission java.security.AllPermission;  
}  

然后启动 jstatd并且不要关闭
如:
Threads

查看线程的运行情况,运行、停止、睡眠、等待,根据这些结合实际程序运行的逻辑分析。
找到可疑份子,可以Thread Dump  找出具体是哪个线程在作祟。
参看这个例子:[url=http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems]http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems
profile
关于如何使用,如何分析程序,可以参看这个例子:[url=http://www.baptiste-wicht.com/2010/07/profile-applications-java-visualvm/]http://www.baptiste-wicht.com/2010/07/profile-applications-java-visualvm/





欢迎光临 数码鹭岛论坛 (http://www.clore.net/forum/) Powered by Discuz! X3.2