Я создал очень простую программу и настроил на моем компьютере ограниченный объем виртуальной памяти.ОЗУ 32 ГБ и виртуальная память 4 ГБ.Затем я создал код 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
HeapSizeAllocation hsa = new HeapSizeAllocation();
hsaList.Add(hsa);
hsa.Test();
Затем я открываю TaskManager в Windows и все еще вижу 21ГБ бесплатно, всего 10 в использовании.Зачем?