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

ANTS Profiler 2.7 – 一款声誉卓著的代码分析器

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2006 年 10 月 2 日

8分钟阅读

viewsIcon

28770

本文介绍如何使用 ANTS Profiler 消除 .NET 应用程序中的性能瓶颈和内存泄漏。

这是我们CodeProject赞助商的展示评论。这些评论旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。

引言

作为 .NET 开发人员,我们深知应用程序很少能在首次编写时就达到我们期望的性能。最常见的两个问题是:

  • 性能瓶颈 – 应用程序在可感知的时长内似乎会锁定。
  • 内存泄漏 – 随着 .NET 应用程序运行时间的推移,内存使用量会持续增加。

为了有效解决这类问题,我们需要一种有效的应用程序分析方法——这正是 ANTS Profiler 的用武之地。

ANTS Profiler 是一款代码分析工具,专为希望深入了解性能和内存问题的 .NET 开发人员而设计。技术测试人员也使用 ANTS Profiler 来定位具体代码行的错误或确定优化范围。

ANTS Profiler 的第一个版本为 .NET 开发人员提供了一个非常简单的工具,用于分析在 VS.NET 2002 中编写的 ASP.NET Web 应用程序的性能。自首次发布以来的 4 年里,Red Gate 一直在不断地开发和完善该工具。最新版本增加了一些非常出色的新功能,并使该工具与时俱进,完全支持在 Windows Vista 平台上进行分析。

ANTS Profiler 2.7 允许您分析您可能正在开发的几乎任何 .NET 代码。它支持用任何 .NET 语言(C#、VB.NET、Managed C++ 等)编写并以任何 .NET Framework 版本(.NET 1.0、1.1 和 2.0)为目标的 .NET 桌面应用程序。您还可以分析 ASP.NET Web 应用程序和 .NET Windows 服务。

2.7 的一个出色功能是我们在 Windows 2003 Server 上分析 ASP.NET Web 应用程序的方式。您不再需要重启 Web 服务器来分析您的 Web 应用程序。事实上,您可以保持原始的网站运行,并分析一个完全独立进程中运行的该网站的单独实例!

ANTS Profiler 的功能

当您使用 ANTS Profiler 分析应用程序性能时,分析结果将立即显示已运行的“最慢的 10 行代码”。您将能够看到您编写的源代码,从而让您能专注于您最擅长的事情——修复代码!

您还可以查看每个方法的执行时间,从最慢到最快。您还可以截取应用程序运行时内存使用情况的快照,以查看您正在消耗多少 .NET 内存。ANTS Profiler 将突出显示最大的“内存占用者”,但也会显示所有活动对象以及它们仍然存在于内存中的原因。对几个快照进行快速比较是发现应用程序内存泄漏的绝佳方法。

使用 ANTS Profiler 分析应用程序

让我们开始使用 ANTS Profiler 分析应用程序。启动 ANTS Profiler 时,项目向导将引导您完成分析器的设置。您首先需要指出您是对性能分析还是内存分析感兴趣。

接下来,您选择要分析的应用程序类型(Windows Forms、ASP.NET 等)。

之后,您只需填写您的应用程序的详细信息,以及您感兴趣的分析区域——例如,通常会先分析您拥有源代码的方法——然后您就可以开始了!

当您选择分析 ASP.NET 时,ANTS Profiler 会从 IIS 中找出当前运行的 Web 站点,并将它们呈现在一个下拉列表中——这是另一个出色的功能,让使用该工具更加轻松。

性能分析:控制分析器

当您分析应用程序性能时,有几个有用的附加功能值得研究。例如,在主工具栏上,您可以禁用分析器,暂时停止 ANTS Profiler 收集任何统计信息。一个有用的技巧是禁用分析器,加载您的 ASP.NET Web 应用程序——这在禁用分析的情况下会快得多,然后一旦您的主页面出现,就重新启用分析器。

您还可以重置分析器,以便从应用程序的一小部分收集性能数据。如果您想调查一个特定的瓶颈,这可能是一项非常有用的技术。

获取结果

当您关闭应用程序时,ANTS Profiler 将自动生成结果。但是,您也可以在应用程序运行时截取性能或内存快照。

在调查瓶颈时,性能结果摘要通常是您的首选。在这里,您可以看到有关应用程序的基本信息,更重要的是,还有一个您应用程序中最大的潜在瓶颈的列表(前 10 名)。

点击特定慢代码行自然会显示该行的源代码

红条会引导您找到最慢的代码行,这样您就可以立即看到在哪里进行更改可以真正让您的应用程序飞速运行。

ANTS Profiler 还包括一个显示已分析的所有方法的视图。您可以通过几次点击来分组和过滤此视图,以查看与您最相关的数据。例如,在这里,我按它们所属的程序集对方法进行了分组

查找内存占用者和内存泄漏

.NET 提供了托管内存模型,所以内存泄漏是过去的事了,对吧?错误!虽然 .NET 中的自动内存管理使我们 .NET 开发人员的生活更加愉快(谁喜欢为每一个 C++ 类编写析构函数),但仍然很容易在应用程序中引入内存泄漏。任务管理器和性能监视器等工具可能会显示您的应用程序占用了大量内存,但只有像 ANTS Profiler 这样的专用内存分析器才能真正显示构成该内存的对象以及它们为什么仍然存在。

.NET 使用垃圾回收模型来管理内存。垃圾回收器会不时运行,并找出应用程序中哪些对象仍然是“活动的”。任何不再活动的可以被收集,内存也会被释放。基本上,一个对象仍然是“活动的”,如果它可以被另一个“活动的”对象访问。您可以将 .NET 内存可视化为一个巨大的蜘蛛网,其中单个的丝线代表对象之间的链接。

ANTS Profiler 的内存分析部分会显示所有活动对象以及连接它们的“蜘蛛网”的具体部分,以便您可以看到采取哪些步骤来释放内存和修复泄漏。

通常,大量的内存存储在数组中。下面的屏幕截图显示了其中一个数组的层次结构。我们在右侧看到数组中包含的所有对象。一个相当常见的错误是将大量对象添加到数组中,但从不移除它们(即使它们不再需要!)。这总是会导致内存泄漏,因为数组会永远保持对象的活动状态。

另一种调查内存问题的常用技术是比较两个内存快照。通常您会

  1. 在应用程序启动并运行时截取一个快照
  2. 运行您认为可能泄漏内存的应用程序的某个部分,然后
  3. 截取第二个快照。

在 ANTS Profiler 中,您可以通过过滤“所有对象”面板仅显示“新”对象来比较这两个快照。

此过滤后的视图现在仅显示自第一个快照以来创建的对象。如果您预计不应该创建任何内存,那么所有这些对象都构成了您的内存泄漏。您可以使用层次结构面板查看哪些其他对象引用了它们,从而找出为什么它们没有被垃圾回收。

每个 .NET 开发人员的必备工具

ANTS Profiler 是市场上最好的 .NET 分析工具之一。它以简单快捷的方式为您提供所需的信息。它向您展示需要优化的代码片段,以提高应用程序的整体性能,并为您的最终用户提供更愉快的体验!

它易于使用,并且生成的結果使任何 .NET 开发人员都能轻松找出代码中潜在的瓶颈。调查内存问题既有趣又有益,并且使修复内存泄漏变得简单直接。

如果您想了解更多信息,有许多优秀的 关于 ANTS Profiler 的评论。一位评论者将其描述为“一款出色的工具,可以帮助您真正精确地找到代码中最令用户头疼的部分”。

使用 ANTS Profiler 评估您的应用程序,看看它是否适合您——下载一个免费的、功能齐全的 14 天试用版。

© . All rights reserved.