天天看點

如何使用JVisualVM進行性能分析

連接配接

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

如何使用JVisualVM進行性能分析

插件清單: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代碼

如何使用JVisualVM進行性能分析
如何使用JVisualVM進行性能分析
如何使用JVisualVM進行性能分析
  1. 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      

增加下列行

如何使用JVisualVM進行性能分析
如何使用JVisualVM進行性能分析
如何使用JVisualVM進行性能分析
  1. grant codebase "file:${java.home}/../lib/tools.jar" {  
  2.  permission java.security.AllPermission;  
  3. };  
grant codebase "file:${java.home}/../lib/tools.jar" {
 permission java.security.AllPermission;

};      

然後啟動 jstatd并且不要關閉

如:

如何使用JVisualVM進行性能分析

Threads

如何使用JVisualVM進行性能分析

檢視線程的運作情況,運作、停止、睡眠、等待,根據這些結合實際程式運作的邏輯分析。

profile