.NET内存分析工具

.NET内存分析工具,.net,memory-profiling,profiling,.net,Memory Profiling,Profiling,可能重复: 我正在寻找好的.NETCLR内存分析工具 我的关键要求是,它将与IIS和独立CLR应用程序配合使用。理想情况下,我会看到分配了哪些对象,它们分配在哪里,它们的大小是多少 有没有人对您乐于推荐的特定工具有过良好的使用经验?在我以前的项目中帮了我很多忙。这不是免费的,但很好 .NET内存探查器是一种功能强大的 用于查找内存泄漏和错误的工具 优化中的内存使用 用C#、VB.NET或任何语言编写的程序 其他.NET语言 我的超级粉丝我目前正在使用。这是一个非常好的工具,具有许多评测细节选项

可能重复:

我正在寻找好的.NETCLR内存分析工具

我的关键要求是,它将与IIS和独立CLR应用程序配合使用。理想情况下,我会看到分配了哪些对象,它们分配在哪里,它们的大小是多少

有没有人对您乐于推荐的特定工具有过良好的使用经验?

在我以前的项目中帮了我很多忙。这不是免费的,但很好

.NET内存探查器是一种功能强大的 用于查找内存泄漏和错误的工具 优化中的内存使用 用C#、VB.NET或任何语言编写的程序 其他.NET语言

我的超级粉丝

我目前正在使用。这是一个非常好的工具,具有许多评测细节选项,并且与独立应用程序、开发服务器和IIS配合得很好。

I秒

除了显示您需要的所有内容外,它还将绘制一个简单的图形,在该图形中,您可以看到什么需要最长的时间来执行,以及什么消耗了内存。当您单击graphp时,它将显示代码中的对应行


我喜欢用太长时间执行的代码行淹没小进度条。

这些年来,我使用它取得了巨大的成功。我尝试了ANTS和其他方法,但还是回到了AQ时代,因为我也在非托管代码中进行了大量开发

我目前正在评估和。一两年前我试过一次喷气式飞机,但没有蚂蚁那么好,所以这次我没有费心。从网站上看,它看起来不像其他两个那样有利于内存评测

ANTS和Scitech memory profiler都有另一个没有的功能,因此哪种功能最好取决于您的偏好。一般来说,科技一号提供了更详细的信息,而蚂蚁一号在识别泄漏物体方面确实令人难以置信。总的来说,我更喜欢ANTS,因为它能够快速识别可能的泄漏

根据我的经验,以下是每种方法的主要优缺点:

ANTS和Scitech.NET内存分析器的常见功能

  • 实时分析特性
  • 在他们的网站上播放精彩的操作视频
  • 易于使用
  • 性能合理(明显比没有附加探查器的情况慢,但不会让您感到沮丧)
  • 显示泄漏对象的实例
  • 基本上他们都做得很好
蚂蚁

  • 一键式过滤器可查找常见泄漏包括:仅由事件处理程序保持活动状态的对象、已处置但仍处于活动状态的对象以及仅由已处置对象的引用保持活动状态的对象。这可能是蚂蚁的致命特征——正因为如此,发现漏洞的速度非常快。根据我的经验,大多数泄漏都是由于事件处理程序没有被解除挂钩而导致的,ANTS只是直接将您带到这些对象。太棒了
  • 对象保留图。虽然同样的信息可以在Scitech中找到,但在ANTS中解释起来要容易得多
  • 除了对象本身的大小之外,还显示子对象的大小(但仅当不幸选择了实例时,而不是在整个类列表中)
  • 更好地集成到Visual Studio(右键单击图形以跳转到文件)
Scitech.NET内存分析器

  • 显示分配对象时的堆栈跟踪。这对分配在许多不同位置的对象非常有用。使用ANTS很难确定泄漏对象的确切创建位置
  • 显示未处置的一次性对象的计数。虽然不表示存在泄漏,但它确实发现了修复此问题的机会,并通过更快的垃圾收集提高了应用程序性能
  • 更详细的筛选选项(可以独立筛选多个列)
  • 显示创建的所有对象(包括垃圾收集的对象)的信息。ANTS只显示“活动”对象统计信息。这使得分析和调整整体应用程序性能变得更加容易(例如,识别不必要地创建了大量不一定泄漏的对象的位置)

总之,我认为ANTS可以帮助您更快地找到泄漏的内容,而Scitech则提供了关于您的整体应用程序内存性能和单个对象的更多细节,只要您知道要查看的内容(例如,创建时的堆栈跟踪)。如果在ANTS中添加了未分散的一次性对象的堆栈跟踪和跟踪功能,我就不需要再使用任何其他功能了。

如果您感到非常绝望,可以使用.Net framework附带的(SOS.DLL)。

因为每个人都列出了可用的工具,我想我应该向您指出.NET探查器的完整列表:

您可以在这里找到这里建议的工具和所有其他工具,每个工具都有它建议的简短描述。

奇怪的是,这里还没有提到。这是免费的,而且效果很好


当心微软自己网站上的多个旧版本。截至2011年11月,最新版本似乎是这样的:

谢谢John-我会看一看。顺便说一句-多么原始的产品名称!事实上,这对于真正模糊的内存问题更有用,例如当你在一个不明显的地方持有一个引用时,不要将一个问题作为一个复制品关闭,而不要添加一个指向实时问题的链接,它是一个复制品。。。只需搜索“.NET内存配置”而不是重复。另一个问题是关于“探查器”,它表示关注性能。这个问题是关于“内存配置”。这些工具可能会有一些重叠,但这肯定是一个不同的问题。该项目似乎现在托管在codeplex上,以及最新的下载: