c#检查垃圾收集

时间:2015-05-15 14:35:46

标签: c# garbage-collection

有没有办法检查GC收集哪些类实例,哪些不是? 我找到的一个选项是通过Test检查类,如下所述:

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

3 个答案:

答案 0 :(得分:2)

  

有没有办法检查GC收集哪些类,哪些不是?

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

您可以使用WeakReferences构建管理,但这会很笨拙且代价高昂。当然不适用于所有对象。

更重要的是,你不应该需要这个。如果你认为你这样做,分析那个思想训练。

答案 1 :(得分:0)

创建一个ReferenceTester类,该类将包含一周的Dictionary个引用 字典使用它们来测试类是否存在。 然后调用GC.Collect()。

然后再次检查ReferenceTester是否仍有课程。

答案 2 :(得分:-1)

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