ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在 .NET 应用程序上运行 Rational PurifyPlus

在 .NET 应用程序上运行 Rational PurifyPlus

原创 Linux操作系统 作者:habug 时间:2009-04-08 15:46:59 0 删除 编辑

安装 PurifyPlus

如下列步骤所示,安装 PurifyPlus 是一个直截了当的过程:

    1. 下载 PurifyPlus 并通过 GUI 安装。当遇到提示时,只需点击 Next 按钮,直到产品安装完毕。
    2. 下载 License Server 并按照类似方法安装。
    3. 配置 License Server 指向 PurifyPlus 提供的版本许可号

图 1 例举了如何在安装 License Server 之后进行配置。License Server 应该为您的本地主机的名称。

屏幕图像

图 1: 配置 License Server

4. 接下来,如图 2 所示,配置 License 使用映射程序(Settings > License Usage Mapper)。对于 Rational Purify、Quantify,和 PureCov,在右边的选项卡上,选择 Rational PurifyPlus for Windows,并且取消选择其他选项。
屏幕图像

图 2: 配置 License Usage Mapper

5. 现在通过浏览您保存的位置导入 License Key 文件。您将在 License Key Administrator 向导中看到 License Key,如图 3 所示。
屏幕图像

图 3: License Key Administrator 向导

现在,准备启动 PurifyPlus。

设置环境,在 .NET 上运行 PurifyPlus

要让 PurifyPlus 在 .NET 上工作,您需要执行以下一些步骤:

  1. \Common 并运行 AspNetMon.exe。在程序运行过程中,您将看到右手下方系统托盘中的交通灯图标。
  2. 单击右键,并选择 Enable .NET profiling for Rational PurifyPlus。
  3. 启动 Rational PurifyPlus 并附加要净化的进程。然后:
    • 等待两分钟
    • 观察 PurifyPlus 是否稳定(一段时间后图象应该稳定了)
    • 查看 w3wp.exe 是否在 Task Manager 中出现多次
    • 如果是,停止 aspnetmon.exe,杀掉所有 w3wp.exe 进程并重新启动 AspNetMon.exe。
    • 打开客户端 Web 页面(您需要启动新的浏览器来进行此操作)。这将创建一个 w3wp.exe 进程。
    • Purify 应该自动地显示出概要图(对于 w3wp.exe)。
  4. 点击 Run。
  5. 继续运行 PurifyPlus

    启动 PurifyPlus

    首先选择 Start > All Programs 并且启动 IBM Rational PurifyPlus > Purify。图 4 显示了 Rational Purify 启动窗口。

    图 4: 您启动 PurifyPlus 时的第一个窗口

    对于托管代码,使用选项“Memory profiling data”。对于非托管代码,使用选项“Error and leak data”。

    在执行您的应用程序的过程中,PurifyPlus 将依附在进程上。

    在 .NET 上使用 PurifyPlus

    当您在选择“Memory profiling data”选项的情况下运行应用程序时,PurifyPlus 将显示一张描述了内存使用量的图。您可以继续浏览您感兴趣的 Web 页面,并且同时您将注意到图上的变更。

    举例来说,当加载 Web 页面时,图上的曲线将成指数级增长,这显示在加载 Web 页面时使用了巨大量的内存。当加载之后,图像将稳定,而在您浏览其他页面时再次变更。

    一旦应用程序开始运行,结果将自动地显示。图 5 显示了 PurifyPlus 中的概要图。

    屏幕图像

    图 5: 当 PurifyPlus 启动时的内存概要图

    快照

    您可以为您正在分析的应用程序,在其运行过程中保存内存概要数据的“快照”,以便您可以之后更详细地观察。快照包含一组关于积累到一个具体时刻的程序状态和量度信息的数据。

    要用 PurifyPlus 创建快照,只需在 Purify 工具栏中点击照相机图标。PurifyPlus 对当前数据进行快照,并且在 Navigator 中创建快照入口,同时继续记录数据。您可以将快照保存到 PurifyPlus 数据文件(.pmy) 或者保存到 ASCII 文本文件(.txt) 中。图 6 显示了 PurifyPlus 快照的样子。

    屏幕图像

    图 6: PurifyPlus 快照

    图 7 例举了 .NET 应用程序的 PurifyPlus 快照。

    屏幕图像

    图 7: .NET 应用程序的快照 自 Rational PurifyPlus 的结果

    PurifyPlus 提供许多不同的窗口来帮助您执行内存概要数据的详细分析,每个窗口如下详细介绍:

    1. Data browser 窗口 —— 在 Memory 选项卡中显示执行的概要数据,在 Call 图、Function List 视图,和 Object List 视图选项卡中显示内存概要数据。
    2. Function Detail 窗口 —— 显示关于具体的 Java 或 .NET 托管方法,及其直接调用者和子调用的数据。该数据以表格(对于聚集运行和快照)和图形格式显示。
    3. Object Details 窗口 —— 包含关于具体对象的详细信息。

    Data browser 窗口

    要显示 Data Browser 窗口,就在 Purify 菜单中选择 View > Data Browser,或单击您在 Navigator 中已经选择的执行的图标。您将在 Data Browser 窗口中看到 Memory 选项卡、Call graph 选项卡、Function List 视图、Object List 视图。

    Memory 选项卡

    Memory 选项卡概述了程序的总内存使用,以及在运行过程中在哪里分配了多少内存(参见图 8)。

    屏幕图像

    图 8: Memory 选项卡显示了描述在应用程序运行时使用的内存量的图。

    Function List View 选项卡

    Function List View 选项卡(参见图 9)列出了程序使用的所有函数和方法,没有按模块或文件分组。此视图帮助根据各种各样的标准对数据排序,并且帮助找到感兴趣的方法和函数,并且显示或隐藏(Show/Hide)它们。

    屏幕图像

    图 9: Function List View 显示了应用程序调用的函数,以及它们使用的内存量。

    函数默认从最高内存使用率到最低内存使用率,以便您可以集中到消耗最大内存的函数上。这些列可以按正序或倒序排序。

    Call Graph 选项卡

    Call Graph 选项卡提供应用程序调用结构的图形表示(参见图 10)。它给出了在应用程序运行过程中使用的内存或 CPU 时间的整个描述。

    屏幕图像

    图 10: 实例 Call Graph

    Call Graph 选项卡显示了函数调用的序列,以及它们使用的内存。粗线和细线帮助您分别区分消耗内存多或少的函数(参见图 11)。Call Graph 还突出了从代价最高的函数回到程序的一开始的路径,较粗的线表示代价较高的路径。您可以根据各种各样的标准突出其他函数。

    屏幕图像

    图 11: Call Graph 中的较粗的线表示内存密集的函数。

    如果您双击任意这些方法(参见图 11 中的矩形框),您将看到如下所述的 Function Detail 窗口。

    Object List 选项卡

    Data Browser 窗口中的 Object List 选项卡(参见图 12)列出了当前选择的内存概要数据集中的所有根对象,或者列出了单个对象引用树中的所有内存对象。

    屏幕图像

    图 12: Object List 选项卡及其特性的实例

    如果在 Settings 对话框的 PowerCheck 选项卡中选择了“Generate Object Reference Graph data”,并且在 Preferences 对话框的 Workspace 选项卡中选择了“Show Object List View”的话,才可以使用 Object List 选项卡。

    如果您为对象收集数据,那么在 Purify 菜单中选择 View > Data Browser,或单击图标并选择 Object List View 选项卡来显示对象列表。

    Object List View 可以显示以下信息:

    • 对象、类文件,和方法名称
    • 受引用对象的数量,及对其他对象的引用
    • 对象当前字节数
    • 对象 + 引用(object + references,O+R)大小
    • 对象的创建时间以及生存的垃圾集合的数量
    • 如果有的话,显示源代码中创建对象的位置的大约行数
    • 对于根对象,显示根类型

    Function Detail 窗口

    要显示 Function Detail 窗口,在 Data Browser 窗口中单击 Call Graph 或 Function List View 选项卡,然后双击方法名,或者选择方法并单击图标。Function Detail 窗口显示关于具体的 Java 或 .NET 托管方法及其直接调用者和子调用的数据。

    在该视图中以图形或表格形式显示的信息类型是(参见图 13):

    • 方法数据 —— 方法本身的详细的内存数据。
    • 调用者数据 —— 一列直接调用者及其详情。
    • 子调用数据 —— 一列直接子调用及其详情。
    • 对象数据 —— 如果方法创建了对象,那么该窗口还包含一列所选择的方法目前分配的所有对象。

    屏幕图像

    图 13: Function Detail 窗口

    Object Details 窗口

    只有当在 Settings 对话框的 PowerCheck 选项卡中选择了“Generate Object Reference Graph data”时,Object Details 窗口才可用(参见图 14)。

    屏幕图像

    图 14: 选择“Generate object reference graph data”选项以查看 Object Details 窗口。

    Object Details 窗口出现在您:

    • 在 Object List View 选项卡中双击对象时
    • 在 Function Detail 窗口中双击对象时
    • 选择对象,并单击右上部的 PurifyPlus 工具栏中的图标时(参见图 15)

    屏幕图像

    图 15: Object Details 视图图标的位置

    图 16 显示了 Object Details 窗口的实例。

    屏幕图像

    图 16: Object Details 窗口及其特性的实例

    注意 Object List View 按如下进行分组和显示对象:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14780873/viewspace-586737/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-07

  • 博文量
    211
  • 访问量
    324116