我正在尝试创建以下数组
int numOfArrays = 50000;
int lengthOfArrays = 13500;
long[,] unsortedNumbers = new long[numOfArrays,lengthOfArrays];
但是我一直在发出内存异常。我的目标是x64,我相信我已经设置了可识别大地址的标志,请参见图片,但我仍然遇到错误。奇怪的是,我在同一程序中有一个列表,它消耗了16gig的ram,没有任何问题。
系统:
64gig ram
100gig免费高清。
对于32位和64位进程,.NET运行时中的对象大小都有2Gig限制。
但是在NET 4.5中,您可以使用gcAllowVeryLargeObjects
增加在64位进程中在运行时上运行的NET代码的限制。
如果以下情况,您的NET代码将以64位运行:
您正在分配:
50000 * 13500 * 8 = 5400000000字节= 5.029千兆字节
如果您不使用NET 4.5,那么根据您的使用情况,您可以改为使用BigArray
: