64位内存不足异常

问题描述 投票:5回答:1

我正在尝试创建以下数组

int numOfArrays = 50000;
int lengthOfArrays = 13500;

long[,] unsortedNumbers = new long[numOfArrays,lengthOfArrays];

但是我一直在发出内存异常。我的目标是x64,我相信我已经设置了可识别大地址的标志,请参见图片,但我仍然遇到错误。奇怪的是,我在同一程序中有一个列表,它消耗了16gig的ram,没有任何问题。

系统:

64gig ram

100gig免费高清。

c# c#-4.0 64-bit out-of-memory
1个回答
11
投票

对于32位和64位进程,.NET运行时中的对象大小都有2Gig限制。

但是在NET 4.5中,您可以使用gcAllowVeryLargeObjects增加在64位进程中在运行时上运行的NET代码的限制。

  • 您的平台目标说“ x64”
  • 您正在使用NET 4,并且平台目标显示“ AnyCPU”,并且您正在64位OS平台上运行
  • 您正在使用NET 4.5,并且平台目标显示“ AnyCPU”并且您已取消/取消选中“首选32位”,并且您正在64位OS平台上运行]
  • 您正在分配:

50000 * 13500 * 8 = 5400000000字节= 5.029千兆字节

如果您不使用NET 4.5,那么根据您的使用情况,您可以改为使用BigArray

© www.soinside.com 2019 - 2024. All rights reserved.