您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 投融资/租赁 > VisualVM_入门指南
1|VisualVM入门指南2009-12-92|修订历史:时间修订内容里程碑版本号修订人2009-12-9初稿1.0.0XXX3|目录1什么是VisualVM?..................................................................................................41.1VisualVM简介................................................................................................41.2如何获取VisualVM..........................................................................................42VisualVM实战..........................................................................................................52.1开启VisualVM之旅........................................................................................52.1.1启动问题..............................................................................................52.1.2界面简介..............................................................................................62.1.3安装插件..............................................................................................62.1.4监控本地Java应用...............................................................................82.1.5监控远程Java应用...............................................................................82.2使用VisualVM查看JVM相关信息................................................................112.3使用VisualVM解决内存溢出问题.................................................................142.4使用VisualVM查看Tomcat的线程状态........................................................162.5使用VisualVM查看CPU消耗情况................................................................204|1什么是VisualVM?1.1VisualVM简介VisualVM提供在Java虚拟机(JavaVirutalMachine,JVM)上运行的Java应用程序的详细信息。在VisualVM的图形用户界面中,您可以方便、快捷地查看多个Java应用程序的相关信息。(摘自官方)简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat,JConsole,jstack,jmap和jinfo,这些工具与JDK的标准版本是一致的。可以使用VisualVM生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,同时它还支持在MBeans上进行浏览和操作。尽管VisualVM自身要在JDK6这个版本上运行,但是JDK1.4以上版本的程序它都能监控。对于我们来说,这些功能都是至关重要的。以前大家可能会用YourKit这样的付费软件来检测我的应用软件,但现在可以用VisualVM这样一个开源工具来实现同样的功能了。更何况,有谁比能Sun公司更了解JVM呢?1.2如何获取VisualVMVisualVM的一个最大好处就是,它已经在你的JDKbin目录里了,只要你使用的是JDK1.6Update7之后的版本。点击一下jvisualvm.exe图标它就可以运行了。这里是VisualVM的官方网站:,资料很全,同时提供VisualVM最近版本下载。5|2VisualVM实战2.1开启VisualVM之旅如果你使用的是JDK是1.6Update7之后的版本,那么VisualVM已经包含在bin目录下了,否则需要去官方下载,目前最新版本是1.2.1。2.1.1启动问题如果你在windows上使用VisualVM,需要做的只是点一下jvisualvm.exe,就能启动它;绿色,好用。但是VisualVM所在的分区如果是NTFS格式,那么第一个问题就出现了:sun对NTFS格式的硬盘支持有问题!但可通过参数可避免,并完成启动。步骤如下:1.创建一个visualvm.exe的快捷方式2.在“目标”中添加如下参数-XX:+PerfBypassFileSystemCheck6|2.1.2界面简介VisualVM启动成功!可以看到VisualVM的界面了。通过VisualVM可以看到本机运行中的所有Java应用。你会发现根本不需要在VisualVM里为Java应用程序注册,它们就会自动显示出来。甚至还可以在导航栏里查看到远程的Java应用。导航栏即为Applications,其中分为Local(本地Java应用)和Remote(远程的Java应用)。2.1.3安装插件VisualVM有很多好用的插件;而且Sun为了推广VisualVM,还举办的VisualVM插件开发大赛,一等奖奖金为2000刀,非常诱人。如何安装插件呢?步骤如下:1.点击Tools-Plugins7|2.推荐安装全部插件8|2.1.4监控本地Java应用VisualVM本身就是一个Java应用,所以打开VisualVM看到的第一个可监控应用就是VisualVM本身;可以用它热热身,小试下牛刀。在VisualVM可视化界面中可以监控到VisualVM本身的内存使用情况、线程情况、Jvm启动参数、cpu消耗情况、垃圾回收情况等很多参数。当然如果在本地启一个Tomcat一样可以看到这些参数,可以方便我们在本地对JVM进行调优。但是且接如果你是在windows下起应用,如果你的Java应用是在NTFS格式的盘附上,记得加参数:-XX:+PerfBypassFileSystemCheck2.1.5监控远程Java应用监视远程Java应用稍微复杂些。VisualVM是通过JMX来和远程Java应用联系的。JMX:JavaManagementExtensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。下面以192.168.0.249上的tomcat为例,叙述下监视远程Java应用的步骤如下:1.为249上的tomcat配置jvm启动参数。在tomcat的catalina.sh中添加如下参数:JAVA_OPTS='-Dcom.sun.management.jmxremote.port=8999-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false'其中-Dcom.sun.management.jmxremote.port=8999指定了JMX启动的代理端口;这个端口就是VisualVM要连接的端口其中--Dcom.sun.management.jmxremote.ssl=false指定了JMX是否启用ssl9|其中-Dcom.sun.management.jmxremote.port=8999指定了JMX是否启用鉴权(需要用户名,密码鉴权)2.在VisualVM添加远程连接的Host。邮件点Remote后点击AddRemoteHost。3.添加249为需要监控的Host4.使用JMX连接249的8999端口10|11|5.连接JMX开始监控远程Java程序2.2使用VisualVM查看JVM相关信息VisualVM可以将JVM的基本信息显示出来。基础信息包括:JVM的启动参数、JRE取得的系统参数(系统参数是可以在Java中使用System拿到的)、JVM的能力参数。他们坐落在Overview试图内。12|1.JVM的启动参数13|2.JRE取得的系统参数14|3.JVM的能力参数2.3使用VisualVM解决内存溢出问题最近公司的Java应用出现了Perm溢出的问题,我们可以用VisualVM来诊断下。将程序部署到249上之后通过JMX运程访问;之后观察Monitor视图15|如上图所示,PermGen在程序运行一段时间后超出了我们指定的128MB,通过Classes视图看到,Java在运行的同时加载了大量的类到内存中。PermGen会存储Jar或者Class的描述信息;所以在class大量增加的同时PermGen超出了我们指定的范围。为了让应用稳定,我们需要探寻新的PermGen范围。检测时段时候后(如下图)发现PermGen在145MB左右稳定,那么我们就得到了稳定的新参数;这样PermGen内存溢出的问题得到解决。16|2.4使用VisualVM查看Tomcat的线程状态通过VisualVM可以检测到线程情况,这个东西在压力测试的时候特别好用。如果线程发生问题可以马上看出来,下面我们以一个正常运行的tomcat为例介绍下如何使用VisualVM观测Thread17|1.一个用户访问tomcat线程18|2.用户沉默了19|3.用户经常访问tomcat20|4.访问情况统计2.5使用VisualVM查看CPU消耗情况VisualVM提供CPU监视功能,可以看到那些类消耗了CPU。当应用耗费CPU过高时,可以通过此功能对应用进行追踪并调查原因。可以通过如下方式查看:21|1.如何进入CPU视图22|2.查看CPU视图23|3.使用搜索功能,查看dheaven相关的类
本文标题:VisualVM_入门指南
链接地址:https://www.777doc.com/doc-3395825 .html