c# 检查垃圾回收

c# Check Garbage Collection

有什么方法可以检查哪些实例 classes 被 GC 收集了哪些没有? 我找到的一个选项是通过测试检查 class,如下所述:

How can I write a unit test to determine whether an object can be garbage collected?

创建一个 ReferenceTester class 将保存 A Dictionary 周参考 字典使用它们来测试 class 是否存在。 然后调用 GC.Collect()。

如果 class 仍然存在,则再次检查 ReferenceTester

Is there any way to check what classes are collected by GC and what are not?

不,因为要检查一个对象,您仍然需要对它的引用,这会阻止它的收集。

您可以使用 Wea​​kReferences 构建一个管理,但这会很笨拙且成本高昂。当然不是对所有对象都可行。

更重要的是,你不应该需要这个。如果你认为你这样做,请分析那个思维列车。

您还可以判断何时使用终结器调用了对象的垃圾收集。这不是 100% 保证的,因为您仍然在 类 上调用 GC.SupressFinalize() 会阻止收集。