![](/img/trans.png)
[英]Does an object with a pending finalizer need to be collected by the GC more than one time?
[英]Determining Pending Finalizer Sources
我正在参加一个存在已知问题的项目。 该应用程序挂在对GC.WaitForPendingFinalizers
的调用上。 显而易见的
解决
方案是删除WaitForPendingFinalizers
调用,但不幸的是,此操作已在第三方程序集中为我们完成,因此无法删除。
相反,我想找到问题的根源,并弄清楚谁的终结者正在阻止。 但是,代码库很大,而且由于我刚接触它,所以它也不熟悉,所以我什至对它可能在哪里都没有任何直觉或直觉。 这意味着我将需要使用仪器和工具来找到它。
所以我的问题是:
这可能是Windbg是您的朋友的情况之一。 看看Tess的博客。 这是有关使用!finalizequeue调试器命令调试终结器问题的文章。 http://blogs.msdn.com/b/tess/archive/2007/10/19/net-finalizer-memory-leak-debugging-with-sos-dll-in-visual-studio.aspx
(如果您以前从未使用windbg和sos.dll进行过任何操作,请在Tess的博客上进行更多阅读。她提供了一些文章,使其很容易上手)。
我快速浏览了VS(VS 11),当我中断时,我可以看到一个名为“ GC Finalizer Thread”的线程,并且在析构函数中执行Sleep()被捕获。
但是您对CF的提及可能会使它完全不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.