jvmstat监控jvm内存

时间:2023-03-09 08:18:53
jvmstat监控jvm内存

1、下载jvmstat-3_0.zip;

2、配置环境变量JVMSTAT_JAVA_HOME为jdk目录E:\Program Files\Java\jdk1.5.0_12

3、监控本机:

     jps查看jvm进程id

E:\Program Files\Java\jdk1.5.0_12\jvmstat\bat>jps

7552 Bootstrap

3008 Jps

7916

7108

打开visualgc查看内存使用情况

E:\Program Files\Java\jdk1.5.0_12\jvmstat\bat>visualgc 7552

    jvmstat监控jvm内存

4、监控远程服务器

服务器新建安全策略文件,因为jdk对jvm做了jaas的安全检测,必须设置策略,使得jstatd允许网络操作。

新建jvmstat.policy,内容如下

grant codebase "file:${java.home}/../lib/tools.jar" {

permission java.security.AllPermission;

};

服务器运行jstatd命令

   $JAVA_HOME/bin/jstatd -J-Djava.rmi.server.hostname=10.8.1.126 -J-Djava.security.policy=/home/test/jvmstat.policy

客户端执行

     E:\Program Files\Java\jdk1.5.0_12\jvmstat\bat>visualgc.cmd 31029@10.8.1.126

31029为服务端jvm进程id,可通过jps命令列出

5、常见错误:

  如果没有建立安全策略会报错误:

Could not create remote object

access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)

java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)

at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)

at java.security.AccessController.checkPermission(AccessController.java:546)

at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)

at java.lang.System.setProperty(System.java:725)

at sun.tools.jstatd.Jstatd.main(Jstatd.java:122)

  如果没有  -J-Djava.rmi.server.hostname=10.8.1.126 参数则客户端执行visualgc命令会报

Remote Exception attaching to rmi://31029@10.8.1.126