java开发中如何使用JVisualVM进行性能分析
jvisualvm是由sun提供的性能分析工具,如此强大的后盾怎能不强大?在jdk6.0以后的版本中是自带的,配置好环境变量然后在运行中输入“jvisualvm”或直接到jdk的安装目录的bin目录下找到运行程序即可运行。如果是用jdk1.5或以前版本的朋友就得要单独安装了。
我觉得其还有一个强大的地方就是不需要用代理启动(即如果要监视某个程序则需要用测试软件来运行程序方便其监视如yourkit这款同类的测试工具)的方式来运行,十分方便,只要是用jdk环境运行的,打开此测试工具后即能看到并监视程度的运行状态,当然前提是要运行在同一个jdk的环境中。
地址:
连接
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的问题:
插件安装
tools->plugin->available plugin 会有值得安装的插件,如:visualgc jconsole
插件列表:
注意:上面提供的端口配置有些麻烦,不如直接这样做:
要使用 visualgc 必须在远程机上启动jstatd代理程序,否则会显示 “not supported for this jvm” 错误
而启动 jstatd 时会有一个权限问题,需要做如下修改:
nano /opt/sun-jdk- 1.6 . 0.26 /jre/lib/security/java.policy
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 找出具体是哪个线程在作祟。
参看这个例子:
profile
关于如何使用,如何分析程序,可以参看这个例子:
推荐阅读
-
java开发中如何使用JVisualVM进行性能分析
-
使用Eclipse开发工具如何解决Java Compiler中Annotation Processin不出现的问题
-
java开发中如何使用JVisualVM进行性能分析
-
使用Eclipse开发工具如何解决Java Compiler中Annotation Processin不出现的问题
-
使用JDK自带的VisualVM进行Java程序的性能分析 JDKVisualVM性能分析
-
在AIX Version 5.3中使用Java和PHP技术进行开发,第1部分:设置Java环境
-
java 开发使用字符串和数字的性能分析
-
java 开发使用字符串和数字的性能分析
-
游戏开发中如何使用CocosCreator进行音效处理
-
mysql开发中如何进行行列转换?使用序列化表的方法实现行转列