65.9K
CodeProject 正在变化。 阅读更多。
Home

ANTS Profiler

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2004年12月17日

6分钟阅读

viewsIcon

45350

了解您的 .NET 应用程序如何使用内存

引言

(点击此处可获得免费试用版)

上个月,我们向您介绍了 使用 ANTS Profiler 进行性能分析,这是一个简单的 .NET 分析器。这次,我们想告诉您 ANTS Profiler 如何帮助您了解您的应用程序如何使用内存。

ANTS Profiler 允许您在安装后的 5 分钟内识别 .NET 应用程序中运行缓慢的代码行,让您可以专注于您最擅长的事情——编写代码。该程序可用于

  • 测量行级和方法执行时间
  • 了解您的应用程序性能
  • 了解您的应用程序如何使用内存

使用 ANTS Profiler 分析应用程序

ANTS Profiler 将分析 Windows 应用程序、ASP.NET Web 应用程序、COM+ 应用程序和 .NET Web 服务。它支持使用 VB.NET、C#、C++(托管)以及 .NET 框架支持的任何其他语言编写的应用程序。

内存分析

本演练将为您概述 ANTS Profiler 的内存分析功能。它基于一个演示 Windows 应用程序 ShapePainter.exe,该应用程序创建一系列对象并在屏幕上绘制它们。该应用程序创建随机的矩形、椭圆形和三角形对象,并将它们绘制在 Shape Painter 窗口中。

屏幕上的每个形状都对应一个托管堆上的对象。本演练的这一部分展示了您如何使用 ANTS Profiler 检查应用程序创建的对象。

第一步是启动 ANTS Profiler 并使用“Profiler Project Wizard”(分析器项目向导)指定您要执行的分析类型。我们选择“Profile memory”(分析内存)以指定我们要检查已创建的对象以及这些对象的创建位置。我们单击“Next”(下一步)按钮继续。

下一步是指定您要分析的 .NET 应用程序的类型。

您可以选择分析 .NET 桌面应用程序、ASP.NET Web 应用程序或 COM+ 服务器应用程序。ShapePainter.exe 是一个 .NET 桌面应用程序,因此我们选择此选项并单击“Next”(下一步)按钮继续。

“Profiler Project Wizard”(分析器项目向导)中的下一步要求您指定应用程序的可执行文件。我们浏览以找到 ShapePainter.exe 文件,然后单击“Finish”(完成)按钮退出向导。我们现在已准备好开始分析。

将弹出一个 ANTS Profiler 对话框,询问您是否要开始分析该应用程序。单击“Yes”(是)继续。

进行内存分析时,您需要拍摄快照才能获得有用的分析器结果。在分析开始之前,将出现以下对话框,其中包含有关拍摄应用程序快照的信息。

单击“OK”(确定)按钮启动应用程序。

当您开始分析时,ANTS Profiler 将启动应用程序(在本例中为 Shape Painter),并使其处于活动状态,以便您可以运行您想要分析的应用程序的那些部分。当 Shape Painter 运行时,它会在窗口中绘制 200 个随机形状。屏幕上的每个形状都对应一个托管堆上的对象。

因为我们正在进行内存分析,所以现在需要拍摄快照才能获得有用的分析器结果。为此,我们将 ANTS Profiler 窗口带到前面,然后单击工具栏中的“Take snapshot”(拍摄快照)按钮。

这会创建一组与应用程序当前状态对应的结果。然后,我们将 Shape Painter 窗口再次带到前面,并继续使用应用程序——我们单击“Add rectangles”(添加矩形)以创建另外 10 个矩形对象。然后,我们切换到 ANTS Profiler 窗口,然后再次单击“Take snapshot”(拍摄快照)按钮以创建第二组结果。

ANTS Profiler 窗口最初显示最近快照的结果“Summary”(摘要)。“Summary”(摘要)包含有关您的应用程序的基本信息,以及“10 Biggest live objects”(10 个最大的活动对象)和“10 Classes with the most live instances”(10 个实例最多的类)。您可以单击“Biggest live objects”(最大的活动对象)列表中的任何链接来导航到特定对象。

“Results”(结果)窗口显示捕获的两组结果。

您可以双击每个结果来切换这两种结果。在这种情况下,“Classes with the most live instances”(实例最多的类)列表中,我们应该看到“ShapePainter.RectangleShape”类中的对象数量在两次快照之间增加了 10 个。

如果您对每个类创建了多少对象感兴趣,可以转到“All classes”(所有类)面板查看所有类的列表。我们可以单击“Class name”(类名)列,按类名对类进行排序,然后向下滚动到“RectangleShape”类。

您可以看到“RectangleShape”对象的总数和总大小。

如果您对“Summary”(摘要)中未列出的对象感兴趣,可以转到“All objects”(所有对象)面板以网格形式查看所有对象。在查看“All objects”(所有对象)面板时,您可以根据需要对方法进行排序、筛选和分组。您可以将“Namespace”(命名空间)列标题拖到网格上方的栏中进行分组,或者在这种情况下,单击“Namespace: ShapePainter”(命名空间:ShapePainter)栏左侧的 + 号以展开网格并显示 ShapePainter 对象。

然后,我们可以单击一个“RectangleShape”类的对象来选中它。

当您单击“All objects”(所有对象)或“Summary”(摘要)面板中的任何对象时,“Hierarchy”(层次结构)面板会更新,显示该对象的详细信息以及它“Refers to”(引用的)和“Referenced from”(被引用的)的对象。

这表明“RectangleShape”对象是 40 字节,并且它被“System.Object[]”引用。

当您单击“All objects”(所有对象)或“Summary”(摘要)面板中的任何对象时,“Source code”(源代码)面板会自动更新,显示创建该对象的源代码。

这表明“RectangleShape”对象是由“CreateFromRandom()”方法创建的。

如果您对创建对象的调用序列感兴趣,可以转到“Call stack”(调用堆栈)面板查看所有已调用方法的列表。在这种情况下,我们需要单击“All objects”(所有对象)面板中的“Object type”(对象类型)标题,按对象类型排序,然后向下滚动以查找“Age”(年龄)最低的“RectangleShape”对象。然后,我们选择“RectangleShape”对象,然后在“View”(查看)菜单中单击“Call stack”(调用堆栈)以显示“Call stack”(调用堆栈)面板。调用堆栈中的第三行显示,当 Shape Painter 应用程序启动时,此形状被绘制。

在“All objects”(所有对象)面板中,我们向下滚动以查找“Age”(年龄)最高的“RectangleShape”对象,然后选择“RectangleShape”对象。调用堆栈中的第三行显示,当单击“Add Rectangles”(添加矩形)工具栏按钮时,创建了此形状。

如您所见,ANTS Profiler 是一种工具,可以帮助您快速了解您应用程序的必要信息。找到适合您的 ANTS Profiler 工作方式的最佳方法是下载您功能齐全、完全受支持的 免费试用版

一个重要的开发工具

ANTS Profiler 是一款简单的 .NET 分析器,可为您提供所需的信息,简单快捷。然后可以优化相应的代码块,从而提高性能并降低硬件要求。它易于使用,并且生成的分析结果使任何 .NET 开发人员都能轻松理解瓶颈或问题所在。

评估 ANTS Profiler 与您的应用程序一起使用,看看它如何适合您——下载一个免费、功能齐全、完全受支持的 14 天试用版。

© . All rights reserved.