[英]Large array C# OutOfMemoryException
對於我在C#中進行的編程練習,我試圖創建一個long數組,長度為0x1fffffff(base10中為536870911),但是我得到了System.OutOfMEmoryException。
對於構建,我以x64系統為目標,並且我在具有8GB RAM的Windows7 x64上運行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;
}
CLR不支持任何單個大小大於2GB的對象。 您需要一個4,294,967,288字節的數組-超過支持的兩倍。
您可以使用那么多的內存,但不能在單個對象(例如數組)中使用。
很難推薦任何有意義的替代方法,因為您沒有陳述要實現的目標,而沒有陳述自己的目標。
這就是說,如果您確實確實需要快速,連續的視圖來查看大於2GB的平面地址空間,則可以使用MemoryMappedFile 。
如果您指出了要在這塊內存中執行的操作,地址空間本身必須是連續的(例如,是否將指向它的指針傳遞給非托管代碼)以及為什么需要進行平面尋址,這將有所幫助。
制作數組的子集,然后填充數組
你的[]
masterarray [] <------填充youraray []最多2gb的緩沖區,然后將其添加到masterarray中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.