教程:分析来自 Java 进程的概要分析数据
目标
通过下列方法使用“概要分析和记录”透视图的“概要分析和记录”视图,来分析对 Java 进程进行概要分析时收集到的数据:
- 标识消耗时间最多的对象和方法
- 标识使用大量内存的类
- 测量程序并行性
- 找出内存泄漏
- 将方法作为时间的一个函数,浏览其每一次执行
- 将执行行为作为时间的一个函数,获取范围更广的执行行为
- 标识活动的线程
- 标识线程何时活动
- 标识频繁调用的方法
- 测量垃圾收集
- 标识程序执行的不同阶段
- 研究不同的方法调用
- 了解方法的调用者
所需时间
一小时
准备工作
在开始本教程之前,需要完成下列任务:
- 安装 Eclipse 平台,包括 Hyades 工具。
- 准备好要导入的样本概要分析的文件。它们的位置如下:
install directory\directory\eclipse\plugins\org.eclipse.hyades.collection.framework\src\org\eclipse\hyades\test\collection\framework
描述
在本教程中,您将使用不同的“概要分析和记录”视图来分析样本 PerformanceExample.class。此样本打开一个包含两个按钮的框架。
您将完成下列任务:
- 在工作台中打开概要分析和记录透视图
- 对 PerformanceExample 类进行概要分析
- 分析概要分析信息
要在监视应用程序时更新视图,单击“刷新视图”按钮
。
单击打开透视图
> 其它 > 概要分析和记录
遵循下列步骤:
- 单击概要分析
。“启动 Java 进程”向导打开,显示“类”页面。
- 选择:选择文件系统上的类。
- 单击浏览,然后查找样本类,它应该在以下位置:
install directory\eclipse\plugins\org.eclipse.hyades.collection.framework\bin\org\eclipse\hyades\test\collection\framework
单击下一步。“目标”页面打开。
- ProfileProject 和 DefaultMonitor 是缺省概要分析资源且可以用来存储来自此概要分析会话的数据。单击下一步。“概要分析过滤器”页面打开。
- 接受缺省过滤器。单击下一步。“概要分析选项”页面打开。
- 已选择我的应用程序使用了太多内存复选框,这意味着与内存相关的信息将包括在从应用程序收集的概要分析数据中。
- 要接收执行信息,选择我的应用程序运行速度太慢。通过选择此选项,您就可以使用统计视图来分析与时间相关的信息。您需要收集执行图形详细信息才能够使用“执行流”和“方法调用”视图。由于此样本的目的是指导您完成所有概要分析视图(包括“执行流”和“方法调用”视图),所以,请单击显示详细信息,然后选择显示执行流图形详细信息。单击完成。
- 这样就创建了必需的概要分析资源,且代理程序和进程出现在“概要分析监视器”视图中。
- 能够看到“文件夹”、“监视器”和“主机”,并且您会看到将数据集中在一起的监视器以及正在运行工作台的机器。
查看一个时间段的执行行为
- 打开“执行流”视图:选择监视器,右键单击,然后选择打开方式 > 执行流。
- 整个程序的执行显示在此视图中。它在右边的垂直轴上显示时间。
- 单击方法名(或其下方的空白区域)来选择它。于是它调用的所有方法都会以黄色突出显示。突出显示区域的垂直长度指示该方法的基本时间。基本时间的精确值显示在状态行中。

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

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

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

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