1

是否可以检查 .NET 3.5 中给定实例的引用数量?

4

5 回答 5

4

您不能在运行时执行此操作。

于 2010-12-28T21:08:33.553 回答
2

如果您加载 SOS 扩展,这可以使用 WinDbg 调试器完成:

.loadby sos.dll mscorwks

您需要在内存中找到对象的地址,最好使用!dumpheap命令来完成。使用对象地址,您可以运行!gcroot <address>以查找对您的对象的所有引用。

于 2010-12-28T21:53:41.740 回答
1

I love ANTS Memory Profiler for those kind of tasks.

于 2010-12-28T21:29:52.333 回答
1

在调试时,您可以使用 Windbg 获取此数据。Windbg中有具体的命令。我不是 Windbg 的专家,但这会让你开始

http://www.bytetalk.net/2009/03/windbg-tips-and-tricks.html

于 2010-12-28T21:11:13.703 回答
1

您无法在运行时通过 CLR 获取此信息,因为 CLR 不维护引用计数。一个很大的暗示是垃圾收集器是分代的,而不是引用计数驱动的。

Raymond Chen 在这里有一篇关于这个主题的好帖子:

http://blogs.msdn.com/b/oldnewthing/archive/2010/08/11/10048629.aspx

于 2010-12-28T21:48:43.107 回答