jvisualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存、cpu分析,线程分析...
jvisualvm已经被集成在jdk1.6以上的版本中(不是jre)。自身运行需要最低jdk1.6版本,但是可以监控运行在jdk1.4以上版本的java程序
以jdk1.6update45(jdk1.6update45自带的jvisualvm)来做说明,当然也可单独下载独立的jvisualvm,正常安装完jdk后,至jdk的bin目录下,运行jvisualvm.exe即可
网上有人说jvisualvm对ntfs的硬盘格式支持的不好(都说不好,也没说到底哪里不好),反正我用着是挺正常的,不管怎么样先把解决方式记下来吧
创建jvisualvm.exe的快捷方式,右键快捷方式选择属性,在“目标”栏中追加"-XX:+PerfBypassFileSystemCheck"
程序运行后会自动监控本机运行的java程序(Local标签下,远程服务器上的java程序需要另行配置),如果是下载的jvisualvm,解压后,运行bin目录下的jvisualvm.exe即可
Local标签下的第一个VisualVM为jvisualvm对自身的监控,可以看到消耗的资源还是很少的,第二个为本机的eclipse
监控项总共分为Overview,Monitor,Threads和一个Sampler。
1.Overview(jvm启动参数,系统参数)
可以看到eclipse的启动参数
(通过这些启动参数,可以判断程序是否有内存溢出)
2.Monitor
左上:cpu利用率,gc状态的监控
右上:堆利用率,永久内存区的利用率
左下:类的监控
右下:线程的监控
performGC:gc的详细运行状态
HeapDump:堆的详细状态(可以看到堆的概况,里面所有的类,还能点进具体的一个类查看这个类的状态)
3.Threads
能够显示线程的名称和运行的状态,在调试多线程时必不可少,而且可以点进一个线程查看这个线程的详细运行情况
监控服务器上的tomcat
tomcat的配置文件catalina.sh中增加:
- JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9998
- -Dcom.sun.management.jmxremote.ssl=false
- -Dcom.sun.management.jmxremote.authenticate=false
- -Djava.rmi.server.hostname=192.168.58.164"
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.58.164"
参数说明:
- 指定了JMX启动的代理端口,这个端口就是visualvm要连接的端口(9998端口不能被别的程序使用netstat -an|gerp 9998)
- Dcom.sun.management.jmxremote.port=9998
- 指定了JMX是否启用ssl
- Dcom.sun.management.jmxremote.authenticate=false
- 指定了JMX是否启用鉴权(需要用户名,密码鉴权)
- Dcom.sun.management.jmxremote.authenticate=false
- 指定了服务器主机名
- Djava.rmi.server.hostname=192.168.58.164
指定了JMX启动的代理端口,这个端口就是visualvm要连接的端口(9998端口不能被别的程序使用netstat -an|gerp 9998) Dcom.sun.management.jmxremote.port=9998 指定了JMX是否启用ssl Dcom.sun.management.jmxremote.authenticate=false 指定了JMX是否启用鉴权(需要用户名,密码鉴权) Dcom.sun.management.jmxremote.authenticate=false 指定了服务器主机名 Djava.rmi.server.hostname=192.168.58.164
填写主机名:
右键创建一个jmx连接:
填写上端口号即可:
配置完成:
监控服务器上的java程序
相较于监控tomcat要麻烦很多,要预先启动jstatd服务(${java_home}/bin目录下)
jstatd是一个监控JVM从创建到销毁过程中资源占用情况并提供远程监控接口的RMI(Remote Method Invocation,远程方法调用)服务器程序,它是一个Daemon程序(后台进程),要保证远程监控软件连接到本地的话需要jstatd始终保持运行。
jstatd运行需要通过-J-Djava.security.policy=***指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy(我放在了${java_home}/bin目录下),文件内容如下:
- grant codebase "file:/home/123/123/jdk1.5.0_15/lib/tools.jar" {
- permission java.security.AllPermission;
- };
grant codebase "file:/home/123/123/jdk1.5.0_15/lib/tools.jar" { permission java.security.AllPermission; };
然后使用这个策略文件启动jstatd服务
- [123@123 bin]$ pwd
- /home/123/123/jdk1.5.0_15/bin
- [123@123 bin]$ ./jstatd -J-Djava.security.policy=./jstatd.all.policy &
[123@123 bin]$ pwd /home/123/123/jdk1.5.0_15/bin [123@123 bin]$ ./jstatd -J-Djava.security.policy=./jstatd.all.policy &
因为监控的过程中需要jstatd服务一直运行,所以加上了&,如果需要日志也可使用:
- ./jstatd -J-Djava.security.policy=./jstatd.all.policy -J-Djava.rmi.server.logCalls=true
./jstatd -J-Djava.security.policy=./jstatd.all.policy -J-Djava.rmi.server.logCalls=true
接下来就可以在jvisualvm中配置监控该服务器上运行的java程序了,和在jvisualvm中配置监控tomcat服务器的操作过程是一样的
需要特别注意的是,有时在配置远程监控java程序的时候jvisualvm会报一个错误
点击查看错误详情:
connection refused to host:127.0.0.1初步判断和主机名有关系
- [123@123 bin]# hostname -i
- 127.0.0.1
[123@123 bin]# hostname -i 127.0.0.1
- [123@123 bin]# hostname 192.168.58.168
[123@123 bin]# hostname 192.168.58.168
修改完重启jstatd服务(网上很多人说要修改主机的/etc/hosts文件,但是我自己测试修改/etc/hosts文件是没有效果的,必须要修改主机名)
填写主机名:
这里要选添加一个jstatd连接:
直接选择默认配置即可(默认使用1099端口):
点击ok后,168上的所有java程序就会自动列出:
PS:
jvisualvm也是可以安装插件的,具体步骤为tool -> plugin ->aviable plugin,推荐一个非常好用的插件VisualGC
安装完这个插件后,将会增加新的监控条目Visual GC,可以看到虚拟机内存各个区的使用情况
相关推荐
linux常用命令大全常用的Linux命令及其简要说明常用的Linux命令及其简要说明常用的Linux命令及其简要说明常用的Linux命令及其简要说明常用的Linux命令及其简要说明常用的Linux命令及其简要说明常用的Linux命令及其...
Tuxedo的配置管理简要说明 Tuxedo的配置管理简要说明
Java Webservice开发实例.里边是完整的调用,包括服务端和客户端。
Java实现遍历、排序、查找算法及简要说明
Java实现遍历、排序、查找算法及简要说明
WAS6集群配置及应用部署简要说明 was6集群配置简要说明
FANUC简要说明书.docxFANUC简要说明书.docxFANUC简要说明书.docxFANUC简要说明书.docxFANUC简要说明书.docxFANUC简要说明书.docxFANUC简要说明书.docxFANUC简要说明书.docxFANUC简要说明书.docx
FANUC简要说明书.pdfFANUC简要说明书.pdfFANUC简要说明书.pdfFANUC简要说明书.pdfFANUC简要说明书.pdfFANUC简要说明书.pdfFANUC简要说明书.pdfFANUC简要说明书.pdf
生源地贷款家庭经济困难情况简要说明.docx
PCI9054简要说明手册 内部资源说明 PCI9054简要说明手册 内部资源说明
该《简要说明》 部分内容摘自国家、 广东省职称评审相关政策文件, 以方便申报单位和人员查阅。《简要说明》 如有与国家、 广东省有关政策文件内容不相 符合的, 请以国家、 广东省发布的有关政策文件为准。
Spyder配置简要说明Spyder配置简要说明Spyder配置简要说明
ERP初阶培训教程 简要说明文档 ERP初阶培训教程 简要说明文档 ERP初阶培训教程 简要说明文档 ERP初阶培训教程 简要说明文档
USPVM产品简要说明
简要介绍了一下容器相关的一些内容,对于初学者来说应该有一些的用途吧
网站维护操作简要说明
设计模式概述。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Tuxedo配置管理简要说明.doc Tuxedo配置管理简要说明.doc Tuxedo配置管理简要说明.doc
微信小程序智慧社区简要说明.pdf微信小程序智慧社区简要说明.pdf微信小程序智慧社区简要说明.pdf微信小程序智慧社区简要说明.pdf微信小程序智慧社区简要说明.pdf微信小程序智慧社区简要说明.pdf微信小程序智慧社区...