Arrays 正在创建数组-类型为';System.OutOfMemoryException';被抛出
我正在使用Visual Studio 2015 VB。净。当我尝试创建以下数组时,会收到错误消息 “引发了类型为'System.OutOfMemoryException'的异常。” 当目标CPU为x86或AnyCPU时 当我将目标CPU设置为x64时,阵列创建得很好Arrays 正在创建数组-类型为';System.OutOfMemoryException';被抛出,arrays,vb.net,exception,Arrays,Vb.net,Exception,我正在使用Visual Studio 2015 VB。净。当我尝试创建以下数组时,会收到错误消息 “引发了类型为'System.OutOfMemoryException'的异常。” 当目标CPU为x86或AnyCPU时 当我将目标CPU设置为x64时,阵列创建得很好 Private maCombsNums As Integer(,,,,) .... maCombsNums = New Integer(50, 50, 50, 50, 50) {} 这是虫子吗?因为我想在32位windows系统上
Private maCombsNums As Integer(,,,,)
....
maCombsNums = New Integer(50, 50, 50, 50, 50) {}
这是虫子吗?因为我想在32位windows系统上运行我的程序。回答您的问题,这不是一个bug。 您需要大量内存,x64将能够提供更多内存
您可能能够为您的用例找到更好的数据结构。例如,如果数据稀疏,您可以使用查找表(
字典
),只填充您需要的内容 您正在创建一个5维数组,每个维度的长度为50。这是312.500.000个整数。我不知道为什么在x64上可以工作,为什么在x86上不能工作,但是内存不足的exeption并不少见,因为它需要1.25GB的内存。可能在32位上,它找不到如此大的连续内存区域。在以32位编译后,您可以尝试使用editbin/LARGEADDRESSAWARE my.exe
,为您的应用程序获得高达3Gb的内存,但可能需要64位。感谢Chris的帮助,我们将尝试以32位编译应用程序