對於我在C#中的編程練習,我試圖創建長度爲 的數組,長度爲0x1fffffff(base10中的536,870,911),但是我得到了System.OutOfMEmoryException。大陣列C#OutOfMemoryException
對於構建,我定位了x64系統,並且我在Windows7 x64上運行了帶有8GB內存的VisualStudio2008。 它應該是足夠的內存陣列(它在JDK x64和CPP項目上工作)
有什麼想法?
const long MAX = 0x1fffffff; // 536870911 in base10
program.arr = new long[MAX];
for (long i = 0; i < MAX; i++)
{
program.arr[i] = i;
}
僅供參考,它被稱爲「C#」,而不是「CSharp」。 – 2011-04-26 14:34:39
你不能製作一個很大的物體。但即使你能做到,你似乎也會因爲RAM決定你可以分配多少內存的錯誤理解而受苦。它沒有,也沒有幾十年。內存容量限制了*快*你將能夠訪問該內存。擁有大內存是性能優化;內存分配實際上最好是從頁面文件中分配出來的。記住,當你分配內存時,你正在分配*虛擬內存*,而不是*硬件內存*。 – 2011-04-26 15:42:48