64位内存不足异常

本文关键字:异常 内存不足 64位 | 更新日期: 2023-09-27 18:24:19

im正在尝试创建以下数组

int numOfArrays = 50000;
int lengthOfArrays = 13500;
long[,] unsortedNumbers = new long[numOfArrays,lengthOfArrays];

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

系统:

64gig ram

100gig免费高清。

64位内存不足异常

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

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

  • https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element

  • 64位.Net应用程序的内存限制?

如果:,您的NET代码将以64位运行

  • 您的平台目标显示"x64"
  • 您使用的是NET4,平台目标显示为"AnyCPU",并且您在64位操作系统平台上运行
  • 您使用的是NET 4.5,而您的平台目标显示"AnyCPU"并且您已经"偏好32位"关闭/取消选中,并且您正在64位操作系统平台上运行

您正在分配:

50000*135000*8=5400000字节=5029 GB

如果你没有使用NET4.5的奢侈,那么根据你的使用场景,你可以使用BigArray

  • http://blogs.msdn.com/b/joshwil/archive/2005/08/10/450202.aspx