2012-05-28 20 views
2

我的一些对象没有被垃圾回收,我需要找出引用对象的位置以及阻止垃圾回收的地方。如何找出阻止垃圾收集的对象?

我正在使用Visual Studio Express。

+0

你有第一次尝试微软CLR探查?这有一些内存分析工具,可能有所帮助:http://www.microsoft.com/en-us/download/details.aspx?id=16273 –

+0

您的代码是。注意,如果无法到达垃圾回收站(没有别的引用它),它只会被垃圾收集,并且它是一个托管对象,并且正在调用collect。 –

+0

我试图使用CLRProfiler,但它只是给了我错误消息,似乎并没有正确运行。 – Drahcir

回答

3

你可以尝试使用Ants Memory Profiler这是一个非常受欢迎的工具。它使用起来相当简单,它试图给你一张图表来说明你的参考文献是什么。在下面我相信它和Bond建议的类似,但是它提供了更简单的用户体验。

它配备了免费的14天试用版。实例图的示例如下所示:

enter image description here

+0

谢谢伊恩,这是一个伟大的工具。 – Drahcir

3

你可以尝试sos extensionswindbg 特别是dumpheap和heapstat命令

+5

准确的答案,但不是微不足道的为微弱的心做; p –

0

我建议:

  1. 分析代码和调试
  2. 如果无法找到泄漏你可以试试这个工具:Memprofiler