我正在测试一个使用弱引用的类,以确保对象能够被垃圾收集,并且我发现即使列表不再被引用,List <>中的对象也从未被收集过.简单数组也是如此.以下代码段显示了一个失败的简单测试.
class TestDestructor
{
public static bool DestructorCalled;
~TestDestructor()
{
DestructorCalled = true;
}
}
[Test]
public void TestGarbageCollection()
{
TestDestructor testDestructor = new TestDestructor();
var array = new object[] { testDestructor };
array = null;
testDestructor = null;
GC.Collect();
GC.WaitForPendingFinalizers();
Assert.IsTrue(TestDestructor.DestructorCalled);
}
Run Code Online (Sandbox Code Playgroud)
省略阵列的初始化会导致测试通过.
为什么数组中的对象没有被垃圾收集?