JProfiler测试RCP教程
一、下载、注册:
1、下载:我们可以从JProfiler的官方网站下载到最新版本的JProfiler,我用的是目前最新版JProfiler6。
下载地址:http://www.ej-technologies.com/products/jprofiler/overview.html
2、注册:在官方网站上当我们确定了下载的版本后会出现如下界面:
我们添写对应的信息后,网站会将注册码发送到你所添写的邮箱当中,打开邮箱便可获得一个免费使用10天的Key码,10天后Key码便不可用,我们得重复上述方法重新申请Key码。
、JProfiler主要功能简介:
1.内存剖析 Memory profiler
JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
- 所有对象
显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。
- 记录对象 Record objects
显示类或所有已记录对象的包。你可以标记出当前值并且显示差异值。
- 分配访问树 Allocation call tree
显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。
- 分配热点 Allocation hot spots
显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。
2.堆遍历 Heap walker
在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:
- 类 Classes
显示所有类和它们的实例。
- 分配 Allocations
为所有记录对象显示分配树和分配热点。
- 索引 References
为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。
- 数据 Data
为单个对象显示实例和类数据。
- 时间 Time
显示一个对已记录对象的解决时间的柱状图。
3.CPU 剖析 CPU Views
JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:
- 访问树 Call tree
显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。
- 热点 Hot spots
显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。
- 访问图 Call graph
显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。
4.线程剖析 Thread profiler
对线程剖析,JProfiler提供以下视图:
- 线程历史 Thread history
显示一个与线程活动和线程状态在一起的活动时间表。
- 线程监控 Thread monitor
显示一个列表,包括所有的活动线程以及它们目前的活动状况。
- 死锁探测图表 Deadlock Detection
显示一个包含了所有在JVM里的死锁图表。
- 目前使用的监测器 Current monitor useage
显示目前使用的监测器并且包括它们的关联线程。
- 历史检测记录 History usage history
显示重大的等待事件和阻塞事件的历史记录。
- 监测使用状态 Monitor usage statistics
显示分组监测,线程和监测类的统计监测数据。
5.VM 遥感勘测技术 VM telemetry
观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示:
- 堆 Heap
显示一个堆的使用状况和堆尺寸大小活动时间表。
- 记录的对象 Recorded objects
显示一张关于活动对象与数组的图表的活动时间表。
- 垃圾回收 Garbage collector
显示一张关于垃圾回收活动的活动时间表。
- 类 Classes
显示一个与已装载类的图表的活动时间表。
线程 Threads
显示一个与动态线程图表的活动时间表。
三、JProfiler如何测试RCP程序
1、启动JProfiler5.1.4后会出现“Quick Start”窗口,如图:
在这里我们要选择要测试程序的类型,我们选择第二项,单击“Next”,进入“Session Settings”配置窗口。
2、Session Settings的窗口的配置
运行界面如图:
此窗口共有四个选项卡,通常情况下我们只需添写“Application Settings”中的相关信息,其中:
Session name:此次测试的名字,可任意添写。
Session Type:测试程序的类型(Local:本地程序、Remote:远程程序、Applet:JAVA小程序、Web Start:Web程序)
Java VM:本地机的所安装的jre版本。
Working dirctory:工作区目录。
注:由于本次要测试的为RCP程序,因此要先将RCP程序打包发行,这里的工作区目录本例来说是RCP发行后的主目录。
Main class or executable JAR:程序的主类或JAR包,当我们将RCP程序打包发行后,会自动生成一个startup.jar的文件,此处添写startup.jar的完整路径。
另外,在下方的“Java File Path”一栏中还需要添加程序源代码路径和类路径,如果不添写,在测试时便无法查看源代码。一切都添好了,单击“OK”。
3、Evaluation Version窗口
此窗口是用来对你使用的JProfiler的版本进行评估,通知你版本的使用期限,如图所示:
这里我们不用管它,直接单击“Evaluate”,出现“Session Startup”窗口如图所示:
这里显示了此次测试的一些配置信息,不用管理它,单击“OK”,此时将会启动要测试的程序,我测试的程序是“PDM数据管理系统”运行介面如下:
4、执行“PDM数据管理系统”,执行“PDM数据管理系统”中的查询操作后,JProfiler显示的界面如图所示:
Aggregation level:显示的方式,我们这里选“pacakge”,图中的“cn.com.panyang.pmanager.model”是我编写程序时手动创建的包,第二列“Instance count”代表程序执行的次数。
接下来标记现在的状态,界面如图:
然后再执行一次“PDM数据管理系统”中的查询操作(查询条件与先前的不一致),界面变为:
红色表示发生变化的对象及变化数量,其中的2142表示两次执行的次数总和,第三列的Difference 表示两次之间发生变化的数量。现在按F4进行垃圾回收,几秒钟后我们会发现,一些类的红色不见了,证明垃圾回收得很彻底。但是,还有一些仍然存在红色区域,说明某些地方对这个类的引用没有被释放,然后我们可以以此为依据对代码进行初步优化。
5、查看方法消耗的时间
在进行完以上的操后我们可以点击窗口左边的“CPU Views”,再点击右侧窗口的“Hot Spots”标签来查看程序运行时每个方法的消耗时间和CPU占用比,如图:
我们可以通过此图,将最耗时和CPU占用大的代码段进行优化,缩短程序的运行时间,从而达到对系统性能的提高。