当前位置:编程学习 > JAVA >>

Jvmstat监控JVM内存

0准备工作
jstat(Java Virtual Machine Statistics Monitoring Tool,运行数据监测工具)工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。Jvmstat是jstat的内存收集功能图形化升级版本。很直观实用。所以本文讲解Jvmstat在本地和远程监控JVM内存的方法。
 
需要的准备工作有两点:
 
1)       下载并安装好sun jdk。
 
2)       了解如何查看jvm实例进程id(pid)。
 
最简单的是通过%JAVA_HOME%\bin下的jps( Java Virtual MachineProcess Status Tool ,查看 JVM 进程状态的工具)查看,查看本地JVM进程不需要输入参数。
 
麻烦点的是通过windows任务管理器找java进程的进程id或者linux下通过ps aux| grep java 找pid。
 
1监控本地JVM内存
1.1Windows系统
命令为:
 
%jvmstat_home%\bat\visualgc.cmdpid
 
pid为要监控的jvm实例的进程id。
 
1.2Linux系统
命令为:
 
%jvmstat_home%\bin\visualgcpid
 
pid为要监控的jvm实例的进程id。需要注意对visualgc 授权。
 
2监控远程JVM内存
2.1被监控主机配置
这里需要用到jstatd工具( jstat 的 daemon 程序,利用 RMI 进行远程监控)。在被监控的主机上部署运行jstatd,命令如下:
 
 ./jstatd -J-Djava.security.policy=all.policy
 
一般来说呢,这里是会出现问题的,那就是 permission 的问题了,Sun 的网站上给了相关的解决方法,方法如下,在%JAVA_HOME%/jre/lib/security/java.policy文件中添加下面的代码:
 
grant codebase"file:${java.home}/../lib/tools.jar" {
 
permissionjava.security.AllPermission;
 
};
 
然后重新启动 jstatd 进程。
 
注意,别关闭起着jstatd 进程的命令提示符或者终端,否则就关闭监控监听守护进程了。
 
2.2监控主机配置
使用 jps 查看远端机器有哪些 JVM 进程在使用,命令如下:
 
jps172.7.9.201// 远端机器的 IP 地址或名称
 
比如输出:
 
[html] 
19727 JConsole  
20454 Jstatd  
19171 ZooKeeperMain  
19685 LogServerStartStopApp  
如1.1和1.2分别操作windows和linux下的Jvmstat。命令分别为:从上面可以看到远端机器的 Jstatd 进程已经启动起来了。
%jvmstat_home%\bat\visualgc.cmdpid@172.7.9.201
 
%jvmstat_home%\bin\visualgcpid@172.7.9.201
 
pid为要监控的jvm实例的进程id。
 
成功执行后你就能看见一个 java 的监视窗口(样子还蛮专业的),这个时候就 可以开始监视了。
 
 
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,