1. 程式人生 > >如何使用JVisualVM進行性能分析

如何使用JVisualVM進行性能分析

ted 分析 authent 無效 java.net ima lines 連接不上 str

地址: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的問題:

http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

插件安裝

tools->plugin->Available Plugin 會有值得安裝的插件,如:VisualGC JConsole


技術分享圖片

插件列表:https://visualvm.dev.java.net/plugins.html

註意:上面提供的端口配置有些麻煩,不如直接這樣做:

要使用 VisualGC 必須在遠程機上啟動jstatd代理程序,否則會顯示 “not supported for this jvm” 錯誤

而啟動 jstatd 時會有一個權限問題,需要做如下修改:

nano /opt/sun-jdk- 1.6 . 0.26 /jre/lib/security/java.policy

Java代碼 技術分享圖片
  1. nano /opt/sun-jdk-1.6.0.26/jre/lib/security/java.policy

增加下列行

Java代碼 技術分享圖片
  1. grant codebase "file:${java.home}/../lib/tools.jar" {
  2. permission java.security.AllPermission;
  3. };

然後啟動 jstatd並且不要關閉

如:
技術分享圖片

Threads


技術分享圖片

查看線程的運行情況,運行、停止、睡眠、等待,根據這些結合實際程序運行的邏輯分析。

找到可疑份子,可以Thread Dump 找出具體是哪個線程在作祟。

參看這個例子:http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

profile

關於如何使用,如何分析程序,可以參看這個例子:http://www.baptiste-wicht.com/2010/07/profile-applications-java-visualvm/

如何使用JVisualVM進行性能分析