教程:分析来自 Java 进程的概要分析数据

目标

通过下列方法使用“概要分析和记录”透视图的“概要分析和记录”视图,来分析对 Java 进程进行概要分析时收集到的数据:

所需时间

一小时

准备工作

在开始本教程之前,需要完成下列任务:

  1. 安装 Eclipse 平台,包括 Hyades 工具。
  2. 准备好要导入的样本概要分析的文件。它们的位置如下:
    install directory\directory\eclipse\plugins\org.eclipse.hyades.collection.framework\src\org\eclipse\hyades\test\collection\framework

描述

在本教程中,您将使用不同的“概要分析和记录”视图来分析样本 PerformanceExample.class。此样本打开一个包含两个按钮的框架。

您将完成下列任务:

  1. 在工作台中打开概要分析和记录透视图
  2. 对 PerformanceExample 类进行概要分析
  3. 分析概要分析信息

要在监视应用程序时更新视图,单击“刷新视图”按钮 具有样式化图标的按钮

在工作台中打开概要分析和记录透视图

单击打开透视图 具有样式化图标的按钮 > 其它 > 概要分析和记录

对 PerformanceExample 类进行概要分析

遵循下列步骤:

  1. 单击概要分析  具有样式化图标的按钮。“启动 Java 进程”向导打开,显示“类”页面。
  2. 选择:选择文件系统上的类。 
  3. 单击浏览,然后查找样本类,它应该在以下位置:
    install directory\eclipse\plugins\org.eclipse.hyades.collection.framework\bin\org\eclipse\hyades\test\collection\framework
    单击下一步。“目标”页面打开。
  4. ProfileProject 和 DefaultMonitor 是缺省概要分析资源且可以用来存储来自此概要分析会话的数据。单击下一步。“概要分析过滤器”页面打开。
  5. 接受缺省过滤器。单击下一步。“概要分析选项”页面打开。
  6. 已选择我的应用程序使用了太多内存复选框,这意味着与内存相关的信息将包括在从应用程序收集的概要分析数据中。 
  7. 要接收执行信息,选择我的应用程序运行速度太慢。通过选择此选项,您就可以使用统计视图来分析与时间相关的信息。您需要收集执行图形详细信息才能够使用“执行流”和“方法调用”视图。由于此样本的目的是指导您完成所有概要分析视图(包括“执行流”和“方法调用”视图),所以,请单击显示详细信息,然后选择显示执行流图形详细信息单击完成
  8. 这样就创建了必需的概要分析资源,且代理程序和进程出现在“概要分析监视器”视图中。 
  9. 能够看到“文件夹”、“监视器”和“主机”,并且您会看到将数据集中在一起的监视器以及正在运行工作台的机器。

    显示资源层次结构和下拉菜单(用于检查资源以使它们可视)的“概要分析监视器”

     

分析概要分析信息

查看一个时间段的执行行为

  1. 打开“执行流”视图:选择监视器,右键单击,然后选择打开方式 > 执行流。 
  2. 整个程序的执行显示在此视图中。它在右边的垂直轴上显示时间。
  3. 单击方法名(或其下方的空白区域)来选择它。于是它调用的所有方法都会以黄色突出显示。突出显示区域的垂直长度指示该方法的基本时间。基本时间的精确值显示在状态行中。

    带有两种方法的“执行流”视图,左边的方法具有黄色阴影
     
  4. 使用放大工具 具有样式化图标的按钮 来启用光标,然后点击以放大某一区域。 

    “执行流”说明细览
     

使用“执行流”视图分析进程

打开“执行流”视图

  1. 在“概要分析监视器”视图中,选择监视器或代理程序。
  2. 右键单击,然后选择打开方式 > 执行流。“执行流”视图打开。

注意:要在监视应用程序时更新视图,单击刷新视图按钮 具有样式化图标的按钮

标识活动的线程

在“执行流”视图中,每个线程都包含许多活动周期,它们是由大量方法调用标识的。在符号表示法中,第一个调用的方法是一个色条,后续调用的方法作为其它色条出现在它的右边。方法调用序列从左向右进展;线程的活动部分就是由这个从左向右的进展标识的。

当选择描述整个方法调用的序列之后,执行该序列所花费的基本时间便显示在状态行中。要查看处于活动状态的线程的基本时间,查找下列时间之间的区别:

  1. 指向所选黄色区域的顶部水平线以在状态行中显示相应的基本时间。
  2. 同样,指向所选黄色区域(此区域覆盖当方法序列处于活动状态时的执行周期)的下边缘,并查看在该点的基本时间。

技巧

标识频繁调用的方法

要标识频繁调用的方法:

  1. 使用“缩放”工具 具有样式化图标的按钮 来放大方法调用的序列。
  2. 查看所选区域内相同颜色的色条。这些色条标识同一个类实例中已多次调用的方法。
  3. 检查具有不同颜色的色条(其每个色条都表示一个方法)的长度。色条越长,执行该方法的时间越长。 

    “方法调用”视图

测量垃圾收集

通常,不可能通过在此视图中检查用户线程中的色条来指出是否已对一个对象进行了垃圾收集。

遵循下列步骤:

  1. 检查此视图中最左边的列。此列称为 GC 线程列,保留它以用于垃圾收集线程。
  2. 检查 GC 线程列中是否有一个细长的矩形。这个矩形很可能出现在具有最多方法调用的对象的正下方。每当已对一个对象进行垃圾收集时,此矩形便出现在 GC 线程列中。

标识程序执行的各个阶段

标识初始化阶段

  1. 使用“放大”工具 具有样式化图标的按钮 来放大主线程顶部的方法调用的序列。
  2. 注意标有 -init- 的方法
  3. 单击以选择方法。将更新状态栏以指示该方法有助于进行初始化(为应用程序中使用的变量赋值)。

使用“方法调用”视图来分析方法

  1. 从“概要分析监视器”中,选择监视器或代理程序。右键单击,然后选择打开方式 > 执行流。出现“执行流”视图。
  2. 选择想要研究的方法,右键单击,然后选择显示方法调用
  3. 使用“放大”工具 具有样式化图标的按钮 以放大显示的部分。这些色条是根据类来进行颜色分类的,并由表示方法调用的水平线相连接。
  4. 通过单击方法的名称来选择方法。 
  5. 单击刷新视图按钮 具有样式化图标的按钮 以确保查看的是最新的信息。
  6. 注意以下行:
    状态行显示方法名和数字 1/1

    此行显示方法的名称,后面是格式 n/m,其中 n 是当前显示的调用数,m 是总调用数。 
  7. 单击上一个  下一个  来浏览所选方法的所有调用(或发送到所选对象的每条消息)。工具栏上的分数会更改为指示您正在查看的调用。

查找方法的调用者

要查找哪些对象在调用方法,遵循下列步骤,在“方法调用”视图中继续进行:

  1. 要查看方法的调用者,单击显示调用者按钮  。方法即显示出来,且调用者显示在其左边。 
  2. 要查看您所查看的每个新调用的方法的调用者的更多详细信息,将光标放在视图中表示该调用者的色条上。状态行显示调用者的信息。
  3. 要查看所选方法调用的方法,单击显示调用的方法按钮  。