如何分析项目中的内存使用情况

是否有任何好的, 免费的工具来分析C#中的内存使用情况?

细节:
我有一个使用相当大的集合的可视化项目。 我想检查这个项目的哪些部分 – 在数据处理方面,或在可视化方面 – 使用大部分内存,所以我可以优化它。
我知道,当谈到计算集合的大小时,情况非常简单,我可以自己完成。 但也有一些元素,我无法轻易估计内存使用情况。
内存使用量非常大,例如处理大小为35 MB的文件,我的程序使用的内存略多于250 MB。

我使用RedGate的ANTS分析器取得了成功。 同样值得一读Brad Abrams的博客 ,他在那里谈到了内存分析

我很惊讶没人提到微软的免费CLR Profiler !

直到最近我才知道这个工具。 我有一个错误,使我的程序继续分配越来越多的内存。 CLR Profiler可以精确定位程序中的内存分配“热点”。

我在安装分析器的15-20分钟内确定了导致泄漏的代码行。

基本上,它会对您的代码进行检测并通过一些分析来运行它(这会大大减慢您的代码速度,我认为10x-100x是官方数字)。

您在一段时间内运行某个工作负载,然后您可以看到代码中哪些位置分配了多少内存(以及释放了多少内存与保留多少内容等)。

请查看: https : //clrprofiler.codeplex.com/

另外,这里有一个关于如何使用该工具的教程: http : //geekswithblogs.net/robp/archive/2009/03/13/speedy-c-part-4-using—and-understanding—clr的.aspx

JetBrains DotTrace也不错。 我使用过RedGate和JetBrains产品,他们都很好地识别了瓶颈和泄漏。

Visual Studio的某些SKU包括分析器。 如果您已经拥有其中一个SKU,它是免费的

从Visual Studio 2005开始,您可以确定Team Developer和Team Suite中包含的探查器。 不确定它是否包含在其他SKU中