.NET内存分析工具

时间:2008-12-30 09:20:00

标签: .net memory-profiling profiling

  

可能重复:
  What Are Some Good .NET Profilers?

我正在寻找好的.NET CLR内存分析工具。

我的关键要求是它可以很好地与IIS和独立的CLR应用程序配合使用。理想情况下,我会看到分配了哪些对象,分配它们的位置以及它们的大小?

有没有人对您推荐的特定工具有任何良好的体验?

9 个答案:

答案 0 :(得分:45)

我目前正在评估Scitech .NET Memory Profiler 3.1ANTS Memory Profiler 5.1。我一年或两年前尝试过JetBrains,它不如ANTS好,所以这次我没有打扰过。通过阅读网站,它看起来像内存分析一样不如其他两个。

ANTS和Scitech内存分析器都具有另一个没有的功能,因此最好取决于您的偏好。一般来说,Scitech提供更详细的信息,而ANTS在识别泄漏对象时真的令人难以置信。总的来说,我更喜欢ANTS,因为它可以快速识别可能的泄漏。

以下是我的经验中各自的优缺点:

ANTS和Scitech .NET Memory Profiler的共同特征

  • 实时分析功能
  • 在其网站上提供优秀的操作视频
  • 易于使用
  • 合理的表现(明显慢于没有附加的探查器,但不会让你感到沮丧)
  • 显示泄漏对象的实例
  • 基本上他们都做得很好

<强> ANTS

  • 一键过滤器以查找常见泄漏,包括:仅由事件处理程序保持活动的对象,已处置但仍处于活动状态的对象以及仅通过已处置对象的引用保持活动的对象。这可能是ANTS的杀手级特征 - 因此发现泄漏的速度非常快。根据我的经验,大多数泄漏是由事件处理程序没有解开而引起的,ANTS只是直接带你到这些对象。真棒。
  • 对象保留图。虽然Scitech提供相同的信息,但在ANTS中解释起来要容易得多。
  • 除了对象本身的大小外,还显示包含子项的大小(但仅在不幸地选择实例时,而不是在整个类列表中)。
  • 更好地集成到Visual Studio(右键单击图形以跳转到文件)

Scitech .NET Memory Profiler

  • 在分配对象时显示堆栈跟踪。这对于在许多不同位置分配的对象非常有用非常有用。使用ANTS很难确定泄漏对象的确切位置。
  • 显示未处理的一次性物品的数量。虽然没有表明泄漏,但它确实有机会解决这个问题并提高应用程序性能,因为垃圾回收速度更快。
  • 更详细的过滤选项(可以单独过滤多个列)。
  • 显示有关创建的总对象的信息(包括收集的垃圾)。 ANTS仅显示“实时”对象统计信息。这样可以更轻松地分析和调整整体应用程序性能(例如,识别不必要地创建大量不一定泄漏的对象的位置)。

总结一下,我认为ANTS可以帮助您更快地找到泄漏的内容,而Scitech会在您知道要查看的内容(例如创建时的堆栈跟踪)后提供有关整体应用程序内存性能和单个对象的更多详细信息。如果堆栈跟踪和跟踪未处置的一次性对象被添加到ANTS我不会看到需要使用其他任何东西。

答案 1 :(得分:31)

奇怪的是,此处尚未提及CLR Profiler。它是免费的,效果很好。

请注意Microsoft自己的网站提供的多个旧版本。截至2011年11月,最新版本似乎是这一个:latest version (alternate link)

答案 2 :(得分:8)

如果您感到非常绝望,可以使用.Net框架附带的WinDbg with the Son-of-Strike library(SOS.DLL)。

答案 3 :(得分:6)

JetBrains Profiler我自己的忠实粉丝

答案 4 :(得分:5)

.Net Memory Profiler在我之前的项目中帮了我很多忙。这不是免费的,但它非常好。

  

.NET Memory Profiler功能强大   用于查找内存泄漏的工具   优化内存使用量   用C#,VB.NET或任何编写的程序   其他.NET语言。

答案 5 :(得分:5)

我是第二个ANTS profiler

除了显示您需要的所有内容之外,它还将绘制简单的图形,您可以在其中查看执行时间最长的内容以及内存的内容。当您单击graphp时,它将显示代码中的相应行。

我喜欢在代码行上淹没的litle进度条,执行时间太长。

答案 6 :(得分:4)

我目前正在使用ANTS Profiler。它是一个非常好的工具,具有许多分析详细信息选项,并且可以与独立应用程序,开发服务器和IIS配合使用。

答案 7 :(得分:4)

由于每个人都列出了可用的工具,我想我会指出完整的.NET分析器列表:http://sharptoolbox.com/categories/profilers-debuggers

你会在这里找到所建议的工具和所有其他的工具,每个工具都有一个简短的描述。

答案 8 :(得分:1)

多年来,我使用Aqtime取得了巨大成功。我尝试过ANTS和其他人,但回到了Aqtime,因为我在非托管代码中做了很多开发。