小编Pau*_*ley的帖子

数组中的对象不会被垃圾收集

我正在测试一个使用弱引用的类,以确保对象能够被垃圾收集,并且我发现即使列表不再被引用,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)

省略阵列的初始化会导致测试通过.

为什么数组中的对象没有被垃圾收集?

.net c# garbage-collection

6
推荐指数
1
解决办法
1258
查看次数

标签 统计

.net ×1

c# ×1

garbage-collection ×1