利用jstat和jvisualVm远程查看jvm资源使用情况猜的各种坑

本文详细记录了使用jstat和jvisualVm远程监控JVM时遇到的问题及解决方法。首先,创建jstatd的安全策略文件并设置正确路径,以避免权限错误。接着,启动jstatd服务并了解其常用参数。在Windows环境中,由于NTFS格式支持问题,需添加特定参数启动jvisualVm。尽管可以通过远程连接监控,但这种方式存在局限性,如无法查看CPU和抓取Dump,建议采用本地方式更为稳妥。此外,文中还提到了jvisualVm插件的获取和安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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有很多强大插件,默认是没有安装的。

可以安装上。但是默认的插件提供网站已经不能用了

通过浏览器直接访问,发现网站已经不能用了

 

地址已经迁移到了新地址:

visualVM插件github地址

可以下载下来后,本地安装。

安装完后就多了新tab

 

使用这种远程的方式,没法查看CPU、没法抓取Dump,因此局限性很大,还是应该使用本地的方式比较稳妥。

 

最后付上各种jdk工具的文章。mark学习。

目录内有各种jdk工具文章

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值