這篇文章僅針對HostSpot虛擬機器
第一步,寫一個測試的policy檔案,命名為test.policy,指定可以訪問tools.jar,內容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
第二步,編寫一個測試程式TestJVisualVM.java:
import java.util.HashMap;import java.util.Map;/** * * 測試jvisualvm的監控功能 * */public class TestJVisualVM {public static void main(String[] args) throws InterruptedException {// 類比佔用資源的部分for(int i = 0; i < 100; i++){Map<String, String> map = new HashMap<String, String>();map.put("" + i, "" + i);Thread t = new Thread(){public void run(){try {Thread.sleep(200 * 1000);} catch (InterruptedException e) {e.printStackTrace();}}};t.start();// sleep 1sThread.sleep(1000);}}}
第三步,編譯:
javac -encoding utf8 TestJVisualVM.java
第四步,運行:
java -Djava.security.policy=test.policy -Djava.net.preferIPv4Stack=true
-Dcom.sun.management.jmxremote.port=10990 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false TestJVisualVM
第五步,配置jvisualvm
先添加遠程主機,再添加遠程JMX連接埠,連接埠要和開機檔案中-Dcom.sun.management.jmxremote.port=10990 指定的一致。
點擊OK後雙擊,如果看到就說明配置正常了:
如果看到錯誤:
檢查連接埠,如果顯示0 :::10990
檢查參數:-Djava.net.preferIPv4Stack=true
[ssergsw@JAZX5FVM-121-119 dubbo-antifraud]$ netstat -an | grep 10990
tcp 0 0 :::10990 :::* LISTEN
如果看到下面的監聽,應該就能正常訪問了:
[ssergsw@JAZX5FVM-121-119 dubbo-antifraud]$ netstat -an | grep 10990
tcp 0 0 0.0.0.0:10990 0.0.0.0:* LISTEN