当执行Java的jar包的时候执行如下代码:
java -jar -Djava.rmi.server.hostname=192.168.88.151 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8889 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dfile.encoding=UTF-8 -Dspring.profiles.active=dev community-0.0.1-SNAPSHOT.jar
参数解析
-Djava.rmi.server.hostname=192.168.88.151 // 主机地址
-Dcom.sun.management.jmxremote=true // 运行远程链接jvm虚拟机
-Dcom.sun.management.jmxremote.port=8889 // 远程链接jvm的端口
-Dcom.sun.management.jmxremote.ssl=false // 是否使用ssl加密传输
-Dcom.sun.management.jmxremote.authenticate=false // 是否需要认证
注意: -Dcom.sun.management.jmxremote.port=8889 // 远程链接jvm的端口,端口不能重复
本人用的是shell脚本
#!/bin/bash nub=8888 perpid=`netstat -tunlp|grep $nub |awk '{print $7}'` if [ $perpid ];then #从后开始删除变量,删除到第一个/停止,赋值给apid apid=${perpid%/*} echo "获取 $nub 端口进程号:$apid" #杀死进程 kill -9 $apid echo "杀死占用 $nub 端口进程(pid:$apid)" else echo "没有进程占用 $nub 端口" fi java -jar -Djava.rmi.server.hostname=192.168.88.151 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8889 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dfile.encoding=UTF-8 -Dspring.profiles.active=dev community-0.0.1-SNAPSHOT.jar & >community.log 2>&1
打开本地jdk的bin目录下的jvisualvm.exe文件
右键远程,点击添加远程主机
输入主机名
点击右键添加JMX连接
输入端口点击确定
jvm的参数
同时可以对内存、GC、类、线程进行监控
查看线程运行状态:
查看对象实例化状态: