我有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?