C#中的垃圾收集器

时间:2014-08-27 12:42:06

标签: c# reference garbage-collection

我对C#中的GC有疑问。根据这个主题:C#: should object variables be assigned to null?

垃圾收集器将收集一个变量,此后在代码中不再使用它。但是,如果我使用以下代码对其进行测试,则GC收集器仅在将变量设置为null时才收集该变量。 (注释掉了一行)(如果没有设置为null它是活着的 - > true,如果它被设置为null它不活着 - > false)我在这里缺少什么?

Coffee coff = new Coffee();
coff.name = "test";
coff.number = 4;

WeakReference test = new WeakReference(coff);
//coff = null;

GC.Collect();
GC.WaitForPendingFinalizers();

Console.WriteLine(test.IsAlive.ToString());

Coffee class包含以下内容:

public class Coffee 
{
    public string name { get; set; }
    public string beans { get; set; }
    public int number { get; set; }
}

@Edit 14:56 27-08-2014:

我找到了答案://stackoverflow.com/questions/17130382/understanding-garbage-collection-in-net。它与以下设置有关。我Qoute:

"由于您使用的是调试器,因此您在这里被绊倒并得出了非常错误的结论。您需要按照在用户计算机上运行的方式运行代码。首先使用Build + Configuration manager切换到Release版本,更改" Active解决方案配置"左上角的组合到"发布"。接下来,进入工具+选项,调试,常规并取消勾选"抑制JIT优化" 。选择"

0 个答案:

没有答案