大数组C#OutOfMemoryException
对于我在C#中的编程练习,我试图创建一个long数组,长度为0x1fffffff(base10中为536,870,911),但是我得到了System.OutOfMEmoryException。
对于构建,我针对x64系统,我在Windows7 x64上运行VisualStudio2008,内存为8GB。 它应该是数组的足够内存(它适用于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 。
如果您指出了这块内存中的内容,为什么地址空间本身必须是连续的(例如,您是否将指针传递给非托管代码)以及为什么需要平面寻址,这将有所帮助。
制作Array的子集然后填充数组
yourary []
masterarray [] <------将youraray []填充到2gb的缓冲区然后将其添加到masterarray中
上述就是C#学习教程:大数组C#OutOfMemoryException分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1041806.html