是否可以检查.NET 3.5中给定实例的引用数量?
答案 0 :(得分:4)
您无法在运行时执行此操作。
答案 1 :(得分:2)
如果加载SOS扩展名,可以使用WinDbg调试器完成此操作:
.loadby sos.dll mscorwks
您需要在内存中找到对象的地址,最好使用!dumpheap
命令。使用对象地址,您可以运行!gcroot <address>
来查找对象的所有引用。
答案 2 :(得分:1)
调试时,您可以使用Windbg获取此数据。 Windbg中有特定的命令。我不是Windbg的专家,但这会让你开始
答案 3 :(得分:1)
我喜欢ANTS Memory Profiler来完成这些任务。
答案 4 :(得分:1)
您无法在运行时通过CLR获取此信息,因为CLR不会维护引用计数。一个很大的暗示是垃圾收集器是世代的而不是引用计数。
Raymond Chen在这里有一篇关于这个主题的好文章:
http://blogs.msdn.com/b/oldnewthing/archive/2010/08/11/10048629.aspx