c# – 确定待定的终结器源

c# – 确定待定的终结器源,第1张

概述我正在进入一个已知问题的项目.应用程序挂起对GC.WaitForPendingFinalizers的调用.显而易见的解决方案是删除WaitForPendingFinalizers调用,但不幸的是,这是在第三方程序集中为我们完成的,因此删除不是一个选项. 相反,我想找到问题的根源,并找出谁的终结器阻止.然而,代码库很大,因为我只是进入它,它也是陌生的,所以我甚至没有任何直觉或直觉的可能性.这意味着我 我正在进入一个已知问题的项目.应用程序挂起对GC.WaitForPendingFinalizers的调用.显而易见的解决方案是删除WaitForPendingFinalizers调用,但不幸的是,这是在第三方程序集中为我们完成的,因此删除不是一个选项.

相反,我想找到问题的根源,并找出谁的终结器阻止.然而,代码库很大,因为我只是进入它,它也是陌生的,所以我甚至没有任何直觉或直觉的可能性.这意味着我将需要使用intrumentation和工具来帮助找到它.

所以我的问题是:

>迭代Finalizer队列的框架/ ee线程是否会出现在Studio的Threads视图中?堆栈跟踪对于找到我们挂起的位置有很长的路要走.
>是否有一个工具可以显示我正在等待的终结器及其根源(这是一个CF项目,但我愿意采取宽路径来尝试找到这个)?
>任何人都有任何想要分享的想法或经验,可能有助于找到这个?

解决方法 我快速浏览了VS(VS 11),当我休息时,我可以看到一个名为“GC Finalizer Thread”的线程,它在我的析构函数中捕获了一个Sleep().

但是你提到的CF可能会让它成为一个完全不同的球赛.

总结

以上是内存溢出为你收集整理的c# – 确定待定的终结器源全部内容,希望文章能够帮你解决c# – 确定待定的终结器源所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1233896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存