jvisualvm能做什么:监视内存泄漏、跟踪垃圾回收、运行时内存、cpu分析、线程分析.
jvisualvm已经集成到jdk1.6或更高版本中(不是jre )。 自身运行最低需要JDK版本1.6,但可以监视运行在JDK版本1.4或更高版本上的java程序
在jdk1.6update45(jdk1.6update45附带的jvisualvm )中进行了说明,请另外下载jvisualvm,成功安装JDK后,前往JDK的asjddp目录下,然后单击jvisualvm
在网上,jvisualvm被认为对ntfs硬盘格式的支持很差。 (说不好,但我没有说到底哪里不好。 )反正我用的很普通,总之记下解决方法吧。
创建jvisualvm.exe快捷方式,右键单击快捷方式,选择属性,然后在“目标”栏中添加“- xx : perfbypassfilesystemcheck”
程序运行时,将自动监视本地运行的java程序。 (在Local标记下,远程服务器上的java程序必须单独设置。 对于下载的jvisualvm,解压缩后运行asjddp目录下的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中
ava _ opts='-DCOM.sun.management.JMX remote.port=9998-DCOM.sun.management.JMX remote.SSL=false-d cote
指定了JMX启动的代理端口。 此端口是visualvm虚拟机连接的端口。 (9998端口不能在其他程序中使用netstat-an |。gerp 9998 ) DCOM.sun.management.JMX remote.port=9998表示, JMX是否启用SSL DCOM.sun.management.JMX remote.authenticate=falli cate密码验证(DCOM.sun.management.JMX remote ) 服务器主机名DJ ava.RMI.server.hostname=192.168.58.164指定要填写主机名。
右键单击以创建jmx连接:
请填写端口号。
配置完成:
监控服务器上的java程序
要比监视tomcat麻烦得多,请启动jstatd服务${java_home}/asjddp目录下}
jstatd是一个远程监视软件(RMI )服务器程序,用于监视从创建到销毁JVM的资源消耗,并提供远程监视接口(如果本地连接了远程监视软件)
要运行jstatd,必须在-J-Djava.security.policy=***中指定安全策略,因此在服务器上创建指定安全策略的文件jstatd.all.policy 已放入${java_home}/asjddp
grant code base ' file :/home/123/123/JDK1.5.0_ 15/lib/tools.jar ' { permission Java.security.alllpermion } 然后使用此策略文件启动jstatd服务
[ 123 @ 123 asj DDP ] $ pwd/home/123/123/JDK1.5.0_ 15/asj DDP [ 123 @ 123 asj DDP ] $./j statd-j-DJ ava.secuuu
./j statd-j-DJ ava.security.policy=./j statd.all.policy-j-DJ ava.RMI.server.log calls=true其次是jvisualls
需要特别注意的是,在配置远程监视java程序时,jvisualvm可能会报告错误
单击以查看错误详细信息:
connectionrefusedtohost :127.0.0.1初步确定与主机名的关系
[ 123 @ 123 asj DDP ] # hostname-I 127.0.0.1 [ 123 @ 123 asj DDP ] # hostname 192.168.58.168修改重启jstatd服务(网上很多人
填写主机名:
要在此处添加jstatd连接:
请直接选择默认配置。 默认值使用1099端口。
单击ok后,将自动列出168个所有java程序。
PS:
jvisualvm也可以安装插件。 具体步骤为tool - plugin -aviable plugin,推荐非常易用的插件VisualGC
安装此插件后,将添加新的监视条目Visual GC,并显示虚拟机内存中每个区域的使用情况
转载于:https://www.cn blogs.com/Sean-Zou/archive/2012/12/27/3710083.html