Visual GC提示”不受此JVM支援“,可以使用此方法解決。
一、添加配置檔案 jstatd.all.policy
[root@localhost /]# cd /usr/local/src/jdk1.8.0_131/bin/
[root@localhost bin]# vim jstatd.all.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
注:若沒有配置 JDK 環境變量,file 後面添加 tool.jar 的絕對路徑
二、啟動
$JAVA_HOME/bin下執行以下指令(前台)啟動,也可以背景啟動指令,預設監聽1099端口。
參數說明:
- -J-Djava.security.policy=jstatd.all.policy =号後面的是檔案的絕對路徑;
- -J-Djava.rmi.server.logCalls=true 打開日志,如果用戶端有連接配接過來的請求,可以監控到,便于排錯;
- -J-Djava.rmi.server.hostname=192.168.134.128 指明本機 hostname 對應的本機位址,確定該位址可以給客戶機通路。因為有的伺服器 hostname 對應的 ip 不一定是外網能連上的,最好在這裡直接明确指定;
- -p 3333 指定服務的端口号,預設是1099。也是可選參數。
注意:後面兩個參數可以省略
三、使用 lsof -i:3333 檢視端口是否正常被監聽
[[email protected] bin]# lsof -i:3333
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
jstatd root u IPv6 t0 TCP *:dec-notes (LISTEN)
jstatd root u IPv6 t0 TCP localhost:->localhost:dec-notes (ESTABLISHED)
jstatd root u IPv6 t0 TCP localhost:dec-notes->localhost: (ESTABLISHED)
jstatd root u IPv6 t0 TCP localhost.localdomain:dec-notes->: (ESTABLISHED)
四、使用 visualvm 連接配接
jvisualvm 添加 ip 為192.168.134.128 端口為 3333 的遠端機器,這樣可以使用jstatd方式遠端監控JVM。