簡體   English   中英

大數組C#OutOfMemoryException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM