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

时间:2010-04-13 11:21:49

标签: c#

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

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

4 个答案:

答案 0 :(得分:3)

我使用RedGate ANTS profiler取得了成功。值得一读的是Brad Abrams blog talked about profiling memory

答案 1 :(得分:2)

我很惊讶没人提到微软的免费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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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