我创建了非常简单的程序,并将我的计算机设置为具有有限数量的虚拟内存。 32GB RAM和4GB虚拟内存。然后我制作了C#代码来消耗所有的.NET内存。
List<HeapSizeAllocation> hsaList = new List<HeapSizeAllocation>();
public class HeapSizeAllocation
{
int[] _arr;
int s1Gb = ( 1024 * 1024 * 1024) /sizeof(int); //1GB = 1024MB 1MB= 1024Kb
public void Test()
{
//Test simple array allocation
_arr = new int[s1Gb * 2];
}
}
单击()=>重复,直到OutOfMemory Thrown
HeapSizeAllocation hsa = new HeapSizeAllocation();
hsaList.Add(hsa);
hsa.Test();
然后我在Windows中打开任务管理器,我仍然看到21 GB免费,只有10个在使用。为什么? qazxsw poi