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

Har*_*can 6 .net garbage-collection

我试图通过在析构函数中使用 console.WriteLine() 来确保释放某个类的实例,但输出从未出现。

我仔细搜索了任何挥之不去的参考资料以及活动订阅,但没有找到。只是为了我自己的理智,在我继续搜索之前,有人可以确认:

GC.Collect();
GC.WaitForPendingFinalizers();
Run Code Online (Sandbox Code Playgroud)

无论对象有多小,都会强制完全回收吗?

Ree*_*sey 5

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

但是,如果您的终结器中有代码,则可能需要调用GC.Collect()两次,因为第一次会导致终结器执行,但在终结器完成之前无法清除实际内存,这意味着后续调用将捕获对象。