java VisualVM 远程监控程序的运行情况,查看Visual GC时,显示”不受此jvm支持“。
![](https://i-blog.csdnimg.cn/blog_migrate/85e3703596cd83cd0eda656c48f94c42.png)
在jdk的bin目录下添加配置文件 jstatd.all.policy
[root@template bin]# cd /usr/lib/jvm/jdk1.8.0_181/bin
[root@template bin]# vim jstatd.all.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
![](https://i-blog.csdnimg.cn/blog_migrate/bac49d8c4dea62725739c227be7998cd.png)
如果没有配置javahome,tools.jar可以写绝对路径 ,一般在lib目录下:/usr/lib/jvm/jdk1.8.0_181/lib/tools.jar。
在/bin目录下启动VisualVM,后台启动(日志输出到文件里)
[root@template bin]# nohup /usr/lib/jvm/jdk1.8.0_181/bin/jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=10.7.104.119 -p 7001 -J-Djava.rmi.server.logCalls=true >/data/jdk.log 2>&1 &
注意:启动命令一定要在/bin目录下(含有jstatd)执行
hostname是本机真实ip;
policy:就是上面新建的文件;
-p 是监听的端口,默认是1099,可以修改
logcalls:是客户端连接过来时的日志输出
在java VisualVM里添加jstatd,端口号是上面我们配置的那个。添加完后会把这个服务器下的全部应用程序信息展示出来,可以挑选自己媳妇的程序查看gc了。
![](https://i-blog.csdnimg.cn/blog_migrate/a3242a212d5f7c1282e97d6854b965a0.png)
注意:启动后可以看一下端口号是否被监听:lsof -i:7001