JProfiler使用说明整理人:大傻,徐磊整理时间:2010-4-11 简介 (2)2 安装说明 (2)3 配置 (2)3.1 本机监控配置 (2)3.2 远程监控配置 (6)3.3 启动监控 (11)4 主要功能简介 (12)4.1 内存剖析M EMORY PROFILER (12)4.2 堆遍历H EAP WALKER (13)4.3 CPU剖析CPU PROFILER (13)4.4 线程剖析T HREAD PROFILER (14)4.5 VM遥感勘测技术VM TELEMETRY (15)5 实战操作 (16)5.1 任务目标 (16)5.2 配置说明 (16)5.3 测试项目 (16)5.4 配置测试 (17)5.5 开始测试 (23)5.6 总结 (27)1简介JProfiler是一个全功能的Java剖析工具(profiler),专用于分析J2SE和J2EE应用程序。
它把CPU线程和内存的剖析组合在一个强大的应用中。
JProfiler可提供许多IDE整合和应用服务器整合用途。
JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存泄漏(memory leaks)、并解决线程的问题。
它让你得以对heap walker作资源回收器的root analysis,可以轻易找出内存泄漏;heap快照(snapshot)模式让未被参照(reference)的对象、稍微被参照的对象、或在终结(finalization)队列的对象都会被移除;整合精灵以便剖析浏览器的Java 外挂功能,JProfiler功能很强大,可以监控普通的java application, applet, java web start, application server 等。
除了可以监控本地的程序,还可以对远程服务器上跑的应用进行监控。
最新版下载连接/download/jprofiler/files.php。
当前使用版本为5.1.42安装说明1.安装windows下安装,点击exe文件进行安装,默认安装即可。
linux下服务端安装,直接解压即可。
安装时会自动搜索是否安装过JDK ,可不必配置.2.注册方法:1)破解文件解压缩到[程序安装目录]/bin文件夹下,覆盖其中两个文件夹。
2)在命令行模式下到当前目录下执行命令:“java -cp . Keygen”就能获取到注册码。
【注意事项】由于是破解版本,有些破解的ID,使用时存在不能成功启动监控,出现这种问题,建议重新换一个ID。
3配置3.1本机监控配置1.在向导界面中选择An application server locally or remotely(应用服务器在本地或远程)。
2.选择integration wizard(集成向导)。
3.选择the profiled application is located选择本地电脑4.选择Tomcat启动脚本文件路径5.在此选择JDK类型和版本号。
6.在此选择Jprofiler端口号,默认是8849。
7.在此选择Jprofiler启动界面方式。
l wait for a connection from the Jprofiler GUI 监控时tomcat需要由JProfiler 来启动l Don’t wait startup immediately 监控tomcat时不用由JProfiler来启动,可以在tomcat运行中,随时打开JProfiler进行监控。
JProfiler会在之前所选择启动脚本的目录中生成startup_jprofiler.bat,用这个启动脚本启动tomcat就行了3.2远程监控配置1.本地机和远程机都需要安装JProfiler,然后在本地机上的JProfiler中进行设置。
选择An application server locally or remotely(应用服务器在本地或远程),选择integration wizard(集成向导)。
2.选择the profiled application is located远程电脑操作系统类型。
3.填写远程电脑IP。
4.选择远端机上的JProfiler的安装目录。
5.将远端机的tomcat启动脚本拷到本地(目录任意),并在这里选中。
6.此选择JDK类型和版本号。
7.在此选择Jprofiler端口号,默认是8849.8.在此选择Jprofiler启动界面方式。
9.这里的“Wait for JProfiler GUI”,“Don't wait for JProfiler GUI, startupimmediately”,与本地监控中的含义相同。
如果选择“Don't wait for JProfiler GUI, startup immediately”会跳转到下面的界面中此处要将本地机的config.xml同步到远端机上。
填写本地机的config.xml文件在远端机上的路径,然后选择拷贝的方式,我选的是manual手动方式。
“copy to directory”试了但没成功,“execute command”没试过。
之后,JProfiler会根据之前所选中的启动脚本,在同一目录中生成一个新的启动脚本。
将这个脚本复制到远端机上。
在远端机上用这个脚本启动tomcat,本地JProfiler才能监控。
3.3启动监控1.启动应用服务器如TOCMAT,jboss (使用Startup_jprofiler.bat脚本启动)2.启动windows下jprofiler,选择session/start center3.选择刚才配置的服务器,点击ok,就开始监控了。
4.看下应用程序下的日志,说明连接成功。
5.JProfiler> Listening on port: 8849。
6.JProfiler> Reconnection. Using last settings.。
4主要功能简介4.1内存剖析Memory profilerJProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。
所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
l所有对象All objects显示类或在状况统计和尺码信息堆上所有对象的包。
你可以标记当前值并显示差异值(mark current values)。
l记录对象Record objects显示类或所有已记录对象的包。
你可以标记出当前值并且显示差异值。
l分配访问树Allocation call tree显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。
l分配热点Allocation hot spots显示一个列表,包括方法、类、包或分配已选类的J2EE组件。
你可以标注当前值并且显示差异值。
对于每个热点都可以显示它的跟踪记录树。
4.2堆遍历Heap walker在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。
堆遍历器有五个视图:l类Classes显示所有类和它们的实例。
l分配Allocations为所有记录对象显示分配树和分配热点。
l索引References为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。
还能提供合并输入视图和输出视图的功能。
l数据Data为单个对象显示实例和类数据。
l时间Time显示一个对已记录对象的解决时间的柱状图。
4.3CPU 剖析CPU profilerJProfiler 提供不同的方法来记录访问树以优化性能和细节。
线程或者线程组以及线程状况可以被所有的视图选择。
所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。
CPU视图部分包括:l访问树Call tree显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。
JDBC,JMS 和JNDI服务请求都被注释在请求树中。
请求树可以根据Servlet和JSP对URL的不同需要进行拆分。
l热点Hot spots显示消耗时间最多的方法的列表。
对每个热点都能够显示回溯树。
该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。
l访问图Call graph显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。
4.4线程剖析Thread profiler对线程剖析,JProfiler提供以下视图:l线程历史Thread history显示一个与线程活动和线程状态在一起的活动时间表。
l线程监控Thread monitor显示一个列表,包括所有的活动线程以及它们目前的活动状况。
l死锁探测图表Deadlock Detection显示一个包含了所有在JVM里的死锁图表。
l目前使用的监测器Current monitor useage显示目前使用的监测器并且包括它们的关联线程。
l历史检测记录History usage history显示重大的等待事件和阻塞事件的历史记录。
l监测使用状态Monitor usage statistics显示分组监测,线程和监测类的统计监测数据。
4.5VM 遥感勘测技术VM telemetry观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示: l堆Heap显示一个堆的使用状况和堆尺寸大小活动时间表。
l记录的对象Recorded objects显示一张关于活动对象与数组的图表的活动时间表。
l垃圾回收Garbage collector显示一张关于垃圾回收活动的活动时间表。
l类Classes显示一个与已装载类的图表的活动时间表。
l线程Threads显示一个与动态线程图表的活动时间表。
5实战操作5.1任务目标找出项目中内存增大的原因5.2配置说明操作系统:Windows2003Web容器:Tomcat5.0.23JDK版本:sun1.4.2监控类型:本地Jprofiler安装路径:D:\jprofiler5Tomcat安装路径:D:\Tomcat55.3测试项目1.新建WEB项目test2.建包cn.test3.在该包下建类文件TestMain.java 和TestBean.javapackage cn.test;public class TestBean {String name = "";}package cn.test;import java.util.ArrayList;public class TestMain {public static ArrayList list = new ArrayList(); //存放对象的容器public static int counter = 0; //作统计用}4.建测试用的JSP文件init1.jsp、init2.jspInit1.jsp(每次执行都创建1万个TestBean对象)<%@ page language="java" import="cn.test.*"pageEncoding="ISO-8859-1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>init</title></head><body><%for(int i=0;i<10000;i++){TestBean b = new TestBean();TestMain.list.add(b);}%>SIZE:<%=TestMain.list.size()%><br/>counter:<%=TestMain.counter++%></body></html>Init2.jsp和init1.jsp一模一样即可(后面有用)。