1,首先在服务器端的任意目录建立安全策略的文件jstatd.all.policy内容如下
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
有文章写得是
grant codebase "file:${JAVA_HOME}/lib/tools.jar" {
permission java.security.AllPermission;
};
尝试过后发现不生效,会报各种没权限的错。
有篇文章写得是看缺啥条件,缺了什么权限就往jdk的\JRE\LIB\SECURITY下把java.policy文件的
grant{
。。。。。
};添加该权限,后面发现需要添加一堆,权限,还去特地查了查java.policy的通配方法。
其实如果刚刚的安全策略的文件jstatd.all.policy如果生效的或是不会报缺少权限的错误的。
因为赋了java.security.AllPermission;
之所以file:${JAVA_HOME}/lib/tools.jar 不生效的原因在于
jstatd 工具是走jvm的,不走linux,所以${JAVA_HOME}是不是别的。
需要配置为 file:${java.home}/../lib/tools.jar 。 ${java.home}被识别为jstatd命令执行的目录即 ${JAVA_HOME}/bin 。
2,启动jstat。
执行
jstatd -J-Djava.security.policy=./jstatd.all.policy
jstatd还有很多参数可设置。常用的有指定端口,指定主机ip。
-J-Djava.rmi.server.hostname= 指定ip 如果涉及到内外网最好设上。
-p 指定端口。
3,使用jvisualvm查看。
如果你在windows上使用Visual VM,需要做的只是点一下jvisualvm.exe,就能启动它;绿色,好用。但是Visual VM所在的分区如果是NTFS格式,那么第一个问题就出现了:sun对NTFS格式的硬盘支持有问题!但可通过参数可避免,并完成启动。步骤如下:
1. 创建一个visualvm.exe的快捷方式(或者像上文一样,在MyEclipse中启动)
2. 在“目标”中添加如下参数
-XX:+PerfBypassFileSystemCheck
右键,“添加远程主机”,如下所示
输入主机IP地址,修改显示名,(高级设置里可以设置自己的jstatd 端口),点击确定,如下所示:
补充:
visualVM有很多强大插件,默认是没有安装的。
可以安装上。但是默认的插件提供网站已经不能用了
通过浏览器直接访问,发现网站已经不能用了
地址已经迁移到了新地址:
可以下载下来后,本地安装。
安装完后就多了新tab
使用这种远程的方式,没法查看CPU、没法抓取Dump,因此局限性很大,还是应该使用本地的方式比较稳妥。
最后付上各种jdk工具的文章。mark学习。