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

查看一个时间段的执行行为
可通过使用“执行流”视图来检查应用程序的执行。整个程序的执行显示在此视图中。它在垂直轴上显示时间。
- 在“概要分析监视器”视图中,选择监视器,右键单击并选择打开方式 > 执行流以打开“执行流”视图。“执行流”视图打开。
- 要检查特定方法,单击方法名(或它下面的空格)以选择它。于是它调用的所有方法都会以黄色突出显示。突出显示区域的垂直长度指示了该方法的基本时间。基本时间的精确值显示在状态行中。

- 使用放大工具
来启用光标,然后点击以放大某一区域。

注意:要在监视应用程序时更新视图,单击刷新视图按钮
。
标识活动的线程
在“执行流”视图中,每个线程都包含许多活动周期,它们是由大量方法调用标识的。在符号表示法中,第一个调用的方法是一个条带,后续调用的方法作为其它条带出现在它的右边。方法调用序列从左向右进展;线程的活动部分就是由这个从左向右的进展标识的。
当选择描述整个方法调用的序列之后,执行该序列所花费的基本时间便显示在状态行中。要查看处于活动状态的线程的基本时间,请查找下列时间之间的区别:
- 指向所选黄色区域的顶部水平线以在状态行中显示相应的基本时间。
- 同样,指向所选黄色区域(此区域覆盖当方法序列处于活动状态时的执行周期)的下边缘,并查看在该点的基本时间。
技巧
- 如果图太密且阅读起来很困难,则放大
密集区域。
- 当选择方法时,它调用的所有方法都以黄色突出显示。
- 可以在工作台上拖放这些视图,同时在必要时可以安排它们。
- 无论将光标指向何处,都将在状态栏中指示相应的基本时间。
- 要复位视图的显示,单击返回(Home)按钮。
标识频繁调用的方法
要标识频繁调用的方法:
- 使用“缩放”工具
来放大方法调用的序列。
- 查看所选区域内相同颜色的条带。这些条带标识同一个类实例中已多次调用的方法。
- 检查具有不同颜色的条带(其每个条带都表示一个方法)的长度。条带越长,执行该方法的时间越长。

测量垃圾回收
通常,不可能通过在此视图中检查用户线程中的条带来指出是否已对一个对象进行了垃圾回收。
遵循下列步骤:
- 检查此视图中最左边的列。此列称为 GC 线程列,保留它以用于垃圾回收线程。
- 检查 GC 线程列中是否有一个细长的矩形。这个矩形很可能出现在具有最多方法调用的对象的正下方。每当已对一个对象进行垃圾回收时,此矩形便出现在 GC 线程列中。
标识程序执行的各个阶段
标识初始化阶段
- 使用“放大”工具
来放大主线程顶部的方法调用的序列。
- 注意标有 -init- 的方法
- 单击以选择方法。将更新状态栏以指示该方法有助于进行初始化(为应用程序中使用的变量赋值)。
使用“方法调用”视图来分析方法
- 从“概要分析监视器”中,选择监视器或代理程序。右键单击,然后选择打开方式 > 执行流。将出现“执行流”视图。
- 选择想要研究的方法,右键单击,然后选择显示方法调用。
- 使用“放大”工具
以放大显示的部分。这些条带是根据类来进行颜色分类的,并由表示方法调用的水平线相连接。
- 通过单击方法的名称来选择方法。
- 单击刷新视图按钮
以确保查看的是最新的信息。
- 注意以下行:

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