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?
不,因为要检查一个对象,您仍然需要对它的引用,这会阻止它的收集。
您可以使用 WeakReferences 构建一个管理,但这会很笨拙且成本高昂。当然不是对所有对象都可行。
更重要的是,你不应该需要这个。如果你认为你这样做,请分析那个思维列车。
您还可以判断何时使用终结器调用了对象的垃圾收集。这不是 100% 保证的,因为您仍然在 类 上调用 GC.SupressFinalize() 会阻止收集。
有什么方法可以检查哪些实例 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?
不,因为要检查一个对象,您仍然需要对它的引用,这会阻止它的收集。
您可以使用 WeakReferences 构建一个管理,但这会很笨拙且成本高昂。当然不是对所有对象都可行。
更重要的是,你不应该需要这个。如果你认为你这样做,请分析那个思维列车。
您还可以判断何时使用终结器调用了对象的垃圾收集。这不是 100% 保证的,因为您仍然在 类 上调用 GC.SupressFinalize() 会阻止收集。