Having enormous blocks of memory is never a good idea, even in 64bit. You get big problems with contiguous memory and fragmentation.
The problem here is finding a contiguous block. You could try enabling 3gb mode (which might help it find a few more bytes) but I really advise against it. The answers here are:
- use less memory
- use a database/file system
- use x64
You might also want to read Eric Lippert’s blog (he seems to have a blog entry for every common .NET question…)