GC.Collect()+ GC.WaitForPendingFinalizers()是否永远不会回收所有可回收的内存?

时间:2012-09-21 17:02:19

标签: .net garbage-collection

我试图通过在析构函数中使用console.WriteLine()来确保释放某个类的实例,但输出永远不会显示。

我仔细搜索过任何挥之不去的引用,以及事件订阅而没有找到任何引用。仅仅为了我自己的理智,在我继续搜索之前,有人可以确认:

GC.Collect();
GC.WaitForPendingFinalizers();

无论物体有多小,都会强行完全回收?

1 个答案:

答案 0 :(得分:3)

一般来说,这应该可以清理大部分内容。

但是,如果你的终结器中有代码,它是possible that you will need to call GC.Collect() twice,因为第一次会导致终结器执行,但是在终结器完成之后才能清除实际内存,这意味着后续调用将抓住对象。