垃圾收集器的范围

时间:2016-03-21 08:45:30

标签: c# garbage-collection

我有2个片段,结果不清楚

这个很好:

List<int> MemoryTest = Enumerable.Repeat(1, 100000).ToList(); 
Console.WriteLine("RAM: {0:0,0} KB", GC.GetTotalMemory(true) / 1024); //542KB

也很好(30KB似乎是来自控制台的开销)

List<int> MemoryTest = Enumerable.Repeat(1, 100000).ToList();
MemoryTest = null;   
Console.WriteLine("RAM: {0:0,0} KB", GC.GetTotalMemory(true) / 1024); //30KB

Snippet(1)此处我预计不会有542KB,因为List<int>超出了范围

{
    List<int> MemoryTest = Enumerable.Repeat(1, 100000).ToList();             
}   
Console.WriteLine("RAM: {0:0,0} KB", GC.GetTotalMemory(true) / 1024); //542KB

代码段(2)即使是GC.Collect()也无济于事:

{
    List<int> MemoryTest = Enumerable.Repeat(1, 100000).ToList();             
}
GC.Collect();    
Console.WriteLine("RAM: {0:0,0} KB", GC.GetTotalMemory(true) / 1024); //542KB

为什么我的GarbageCollector / 托管代码没有按预期清除RAM?

0 个答案:

没有答案