這種方式要求咱們在啓動Java程序的時候手動開啓jmx remote功能。開啓的方式是使用下面的命令行參數啓動Java程序: java
-Dcom.sun.management.jmxremote.port=<port> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
這裏<port>是jxm remote使用的端口。你們能夠隨意改爲本身想要的端口。 服務器
假設咱們要在10.2.3.4這臺機器上啓動一個Java程序foo.jar。那麼咱們可使用下面的方式來啓動程序。
工具
java -Dcom.sun.management.jmxremote.port=40124 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar foo.jar
在這裏咱們把端口設置成了40124。 spa
接下來咱們打開jvisualvm,而後在Remote上點擊右鍵,填上咱們要監控的服務器host: 10.2.3.4,點擊OK。
接下來,咱們在10.2.3.4上面右鍵選擇Add JMX Connection,把Connection信息填成10.2.3.4:40124。這裏端口號就是咱們以前啓動foo.jar時設置的端口號。
命令行
接下來,咱們就能夠查看這個Java程序的信息,而且能夠執行諸如Thread Dump或者Heap Dump的操做。
code
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };接下里咱們使用下面的命令來啓動jstatd(注意,啓動jstatd的用戶要求跟啓動Java程序的用戶一致,否則jstatd就沒有權限訪問程序的信息了):
jstatd -p 40123 -J -Djava.security.policy=jstatd.all.policy