教程:分析概要分析数据
目标
通过下列方法使用“概要分析和日志记录”透视图的“概要分析和日志记录”视图来分析对 Java 进程进行概要分析时收集到的数据:
- 标识消耗时间最多的对象和方法
- 标识消耗大量内存的类
- 测量程序并行性
- 找出内存泄漏
- 将方法作为时间的一个函数,浏览其每一次执行
- 将执行行为作为时间的一个函数,获取范围更广的执行行为
- 标识活动的线程
- 标识线程何时活动
- 标识频繁调用的方法
- 测量垃圾回收
- 标识程序执行的不同阶段
- 研究不同的方法调用
- 了解方法的调用者
所需时间
一小时
准备工作
在开始本教程之前,需要完成下列任务:
- 安装 Eclipse 平台,包括 Test and Performance Tools Platform(TPTP)。
- 准备好要导入的样本概要分析文件(hcframe.jar)。该文件应该位于以下目录中:
TPTP_install_dir\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0
描述
在本教程中,您将使用不同的“概要分析和日志记录”视图来分析样本 PerformanceExample.class。此样本打开一个包含两个按钮的框架。
您将完成下列任务:
- 在工作台中打开概要分析和日志记录透视图
- 对 PerformanceExample 类进行概要分析
- 分析概要分析信息
要在监视应用程序时更新视图,单击“刷新视图”按钮
。
从窗口菜单中,单击打开透视图 > 其他 > 概要分析和日志记录。
要对 PerformanceExample 类进行概要分析,请执行下列步骤:
- 单击概要分析下拉菜单
并选择概要分析。这就打开了“启动概要分析”对话框。
- 双击外部 Java 应用程序以创建新配置。
- 切换至主要选项卡。
- 在类名字段中输入 org.eclipse.hyades.test.collection.framework.PerformanceExample。
- 单击添加 Jar 以添加包含此类的 jar。
- 选择 TPTP_install_dir\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0\hcframe.jar
- 单击打开。这就添加了 jar。
- 单击监视选项卡。可在此选项卡中指定概要分析条件。
- 在“监视”选项卡上,展开标签为
Java 概要分析的节点,然后选择基本内存分析并选中它旁边的复选框。这将把与内存相关的信息添加至应从应用程序收集的信息类型列表。
- 选择执行时间分析并选中它旁边的复选框。在选择了此选项后,您就可以使用统计视图来分析与时间相关的信息。您需要收集执行图形详细信息才能够使用“执行流”和“方法调用”视图。由于此样本的目的是指导您使用所有概要分析视图(包括“执行流”和“方法调用”视图),所以,在选择执行时间分析时,请单击编辑选项,然后在“编辑概要分析选项”对话框中选择显示执行流图形详细信息。并且,请选中复选框收集被过滤器集排除的边界类并将边界类深度设置为
1。然后,单击完成。
- “概要分析过滤器集”使您能够指定要分析的一小部分信息。如果要过滤掉不想分析的类或包,这种功能就会很有用。
选择数据收集器
Java 概要分析并单击编辑选项,这将打开“过滤器集”对话框。 在所选过滤器集的内容下面,单击添加以添加要为其收集数据的类或包。这就打开了“添加过滤器”对话框。
- 要对此类进行概要分析,请输入 org.eclipse.hyades.test.collection.framework.* 作为类。
- 将方法名指定为 * 以仅包括与此示例相关的方法。
- 单击确定。这会将该过滤条件添加到内容列表中。
- 要从过滤器内容列表中排除其他现有的类,请在类的“规则”列下面单击包括并将它更改为排除。
- 单击下一步以转到限制页。此页根据耗用时间或方法调用次数来控制收集的数据量。接受缺省值。单击完成以关闭并应用所作的更改。
- 单击目标选项卡。ProfileProject 和“缺省监视器”是缺省概要分析资源,可以使用它们来存储来自此概要分析会话的数据。
- 单击概要分析。
- 这样就创建了必需的概要分析资源,且代理程序和进程出现在“概要分析监视器”视图中。
- 通过选择以下屏幕捕获中显示的分布式布局来允许查看监视器。这将允许您查看用于将数据集中在一起的监视器以及正在运行工作台的机器。

查看一个时间段的执行行为
可通过使用“执行流”视图和表来检查应用程序的执行。整个程序的执行以图形和表格格式显示在此视图中。在“执行流”视图中,时间显示在垂直轴上。“执行流”表在“执行流”视图的下方打开,并且列示每个线程和每个线程调用的方法。
- 在“概要分析监视器”视图中,选择监视器,然后单击鼠标右键并选择打开方式 > 执行流以打开“执行流”视图。这就打开了“执行流”视图。
- 要检查特定方法,单击方法选择它。于是它调用的所有方法都会以黄色突出显示。突出显示区域的垂直长度指示了该方法的额定时间。额定时间的精确值显示在状态行中。

如果将光标移至视图中的任何对象上,窗口底部的状态栏就会显示详细信息。
- 使用放大工具
来启用光标,然后点击以放大某一区域。
注意:要在监视应用程序时更新视图,单击刷新视图按钮
。
标识活动的线程
在“执行流”视图中,每个线程都包含许多活动周期,它们是由大量方法调用标识的。在符号表示法中,第一个调用的方法是一个条带,后续调用的方法作为其他条带出现在它的右边。方法调用序列从左向右进展;线程的活动部分就是由这个从左向右的进展标识的。
当选择描述整个方法调用的序列之后,执行该序列所花费的额定时间便显示在状态行中。要查看处于活动状态的线程的额定时间,请查找下列时间之间的区别:
- 指向所选黄色区域的顶部水平线以在状态行中显示相应的额定时间。
- 同样,指向所选黄色区域(此区域覆盖当方法序列处于活动状态时的执行周期)的下边缘,并查看在该点的额定时间。
提示
- 如果图太密且阅读起来很困难,则放大
密集区域。
- 当您选择方法时,它调用的所有方法都将以黄色突出显示。
- 可以在工作台上拖放这些视图,同时在必要时可以安排它们。
- 无论将光标指向何处,状态栏都会指示相应的额定时间。
- 要复位视图的显示,单击还原按钮。
标识频繁调用的方法
要标识频繁调用的方法:
- 使用“缩放”工具
来放大方法调用的序列。
- 查看所选区域内相同颜色的条带。这些条带标识同一个类实例中已多次调用的方法。
- 检查具有不同颜色的条带(其每个条带都表示一个方法)的长度。条带越长,执行该方法的时间越长。
测量垃圾回收
通常,不可能通过在此视图中检查用户线程中的条带来指出是否已对一个对象进行了垃圾回收。
请执行下列步骤:
- 缺省情况下,垃圾回收线程是隐藏的。通过在视图的上下文菜单下选择线程 > GC 来启动垃圾回收线程。
- 检查此视图中最左边的列。此列称为 GC 线程列,保留它以用于垃圾回收线程。
- 检查 GC 线程列中是否有一个细长的矩形。这个矩形很可能出现在具有最多方法调用的对象的正下方。每当已对一个对象进行垃圾回收时,此矩形便出现在 GC 线程列中。
标识程序执行的各个阶段
标识初始化阶段
- 使用“放大”工具
来放大主线程顶部的方法调用的序列。
- 注意标有 -init- 的方法。
- 单击以选择方法。将更新状态栏以指示该方法有助于进行初始化(为应用程序中使用的变量赋值)。
使用“方法调用”视图来分析方法
- 从“概要分析监视器”中,选择监视器或代理程序。单击鼠标右键,然后选择打开方式 > 执行流。将出现“执行流”视图。
- 选择要研究的方法,单击鼠标右键,然后选择显示方法调用。
- 使用“放大”工具
以放大显示的部分。这些条带是根据类来进行颜色分类的,并由表示方法调用的水平线相连接。
- 通过单击方法的名称来选择方法。
- 单击刷新视图按钮
以确保查看的是最新的信息。
- 注意以下行:

此行显示方法的名称,后面是格式 n/m,其中 n 是当前显示的调用数,m 是总调用数。
- 单击上一步
和下一步
来浏览所选方法的所有调用(或者所选对象的每条消息)。工具栏上的分数会更改为指示您正在查看的调用。
查找方法的调用者
要查找哪些对象在调用方法,请执行下列步骤,在“方法调用”视图中继续进行:
- 要查看方法的调用者,单击显示调用者按钮
。方法即显示出来,且调用者显示在其左边。
- 要查看您所查看的每个新调用的方法的调用者的更多详细信息,将光标放在视图中表示该调用者的条带上。状态行显示调用者的信息。
- 要查看所选方法调用的方法,单击显示被调用的方法按钮
。
(C) Copyright IBM Corporation 2000, 2006.