VisualVM遠程監控
VisualVM是集成了多個JDK命令工具的一個可視化工具,它主要用來監控JVM的運行情況,可以用它來查看和瀏覽Heap Dump、Thread Dump、內存對象實例情況、GC執行情況、CPU消耗以及類的裝載情況。
在JDK Update7之后,VisualVM作為JDK的一部分發布,但同時VisualVM也發布獨立的版本。VisualVM必須運行在JDK1.6以上的VM環境下,但可以用它來監控JDK1.4以上的JVM。
下載地址:https://visualvm.dev.java.net/files/documents/7163/144406/visualvm_12.zip
一,監控本機JVM
如果要監控本機的JVM運行情況,只要打開VisualVM,JVM會自動被添加到VisualVM中進行監控
如上圖,VisualVM本身也是一個Java應用程序,因此它自己監控自己JVM的運行情況,只要雙擊Local –> VisaulVM,右邊就可以進行各項指標的瀏覽。
注:讀者看到的標簽可能會隨著安裝的插件不同而有所區別,VisualVM的插件可以通過Tools –> Plugins 來安裝
二,監控遠程JVM
VisualVM監控遠程JVM是通過RMI服務器來實現的,因此需要在被監控的遠程服務器上啟動RMI服務
1,啟動RMI服務
在需要被監控的服務器上面,通過jstatd 來啟動RMI服務
首先,配置java安全訪問,將如下的代碼存為文件 jstatd .all.policy:
Java代碼
- grant codebase "file:${java.home}/../lib/tools.jar" {
- permission java.security.AllPermission;
- };
然后通過如下的命令啟動RMI服務:
Java代碼
- jstatd -J -Djava.security.policy=jstatd.all.policy
上面啟動的RMI服務的端口是1099,如果需要以其它端口啟動RMI服務,請查看官方文檔:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstatd .html
2,啟動VisualVM,添加遠程主機
右鍵單擊Remote,選擇Add Remote Host,輸入遠程主機的地址
如果遠程服務器啟動了RMI服務,VisualVM會自動顯示主機上面的JVM
關于VisualVM連接遠程JVM的錯誤,請查看Troubleshooting connection problems in JConsole 一 文,此文總結了連接時會遇到的各種問題,我開始通過VisualVM連接虛擬機中的JVM,總是 報:java.net.ConnectException: Connection refused: connect 錯誤,也是通過文章中所描述的關于通過NAT訪問JVM問題解決的。