繁体   English   中英

检查.NET 3.5中对给定实例保留了多少引用

[英]Check how many references are held to a given instance in .NET 3.5

是否可以检查.NET 3.5中对给定实例保留了多少引用?

您无法在运行时执行此操作。

如果加载了SOS扩展名,则可以使用WinDbg调试器来完成:

.loadby sos.dll mscorwks

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

调试时,可以使用Windbg获取此数据。 在Windbg中有特定的命令。 我不是Windbg专家,但这可以帮助您入门

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

我喜欢ANTS Memory Profiler来完成这些任务。

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

雷蒙德·陈(Raymond Chen)在此主题上有一篇很好的文章:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM