开发者

Large array C# OutOfMemoryException

For my programming exercise in C#, I am trying to create an array of long, with a length of 0x1fffffff (536,870,911 in base10), however I got System.OutOfMEmoryException.

For the build, I targeted x64 system, and I am running Vi开发者_如何学JAVAsualStudio2008 on Windows7 x64 with 8GB of RAM. It should be enough memory for the array (it works on JDK x64 and CPP project)

Any thoughts ?

        const long MAX = 0x1fffffff; // 536870911 in base10
        program.arr = new long[MAX];
        for (long i = 0; i < MAX; i++)
        {
            program.arr[i] = i;                
        }


The CLR doesn't support any single object of size greater than about 2GB. You're asking for an array of 4,294,967,288 bytes - over twice what's supported.

You can use that much memory, but not in a single object (such as an array).


It is hard to recommend any sort of meaningful alternative since you don't state what you're trying to achieve, just what you can't do.

That said if you really do need something which is a fast contiguous view into a flat address space bigger than 2GB in size you could use MemoryMappedFile.

It would help if you indicated what is meant to be going in this lump of memory, why the address space itself must be contiguous (are you passing a pointer to it to unmanaged code for example) and why it needs flat addressing.


Make a subset of Array then fill the array

yourary[]

masterarray[] <------ Fill youraray[] upto 2gb of buffer then add it in the masterarray

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜