这种方式要求咱们在启动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