如何判断对象是否收集了垃圾

时间:2013-03-17 11:41:35

标签: c# .net garbage-collection

如何判断对象是否已被垃圾收集?

1 个答案:

答案 0 :(得分:29)

根据this

您通常无法通过使用对象的某些引用来判断对象是否已被垃圾收集 - 因为一旦您有对该对象的引用,它就不会被垃圾回收。

您可以使用WeakReference对象创建对对象的弱引用。出于垃圾收集的目的,弱引用是不计入引用的引用。

在下面的代码中,我们检查垃圾收集之前和之后,以显示Dog对象是垃圾收集。

        Dog dog = new Dog("Bowser");

        WeakReference dogRef = new WeakReference(dog);
        Console.WriteLine(dogRef.IsAlive);

        dog = null;
        GC.Collect();

        Console.WriteLine(dogRef.IsAlive);

enter image description here