C# gcallowverylargeobjects未解决C中的尺寸限制#
在我的C代码中,我需要包含一个13805*55223大小的矩阵;我相信它没那么大 为了克服RAM限制,我使用了gcAllowVeryLargeObjects,并且我还选择了32位系统 做了所有这些,我仍然面临“数组维度超出支持范围”错误C# gcallowverylargeobjects未解决C中的尺寸限制#,c#,arrays,dimensions,gcallowverylargeobjects,C#,Arrays,Dimensions,Gcallowverylargeobjects,在我的C代码中,我需要包含一个13805*55223大小的矩阵;我相信它没那么大 为了克服RAM限制,我使用了gcAllowVeryLargeObjects,并且我还选择了32位系统 做了所有这些,我仍然面临“数组维度超出支持范围”错误 我非常感谢您为处理此问题提供的帮助。如果以下程序在您的系统上运行,请尝试。 它创建一个大小为13805*55223的一维整数数组。 对于这些阵列大小,保留了约3GB的内存,在我的系统上运行良好 program.cs: using System; namespa
我非常感谢您为处理此问题提供的帮助。如果以下程序在您的系统上运行,请尝试。 它创建一个大小为13805*55223的一维整数数组。 对于这些阵列大小,保留了约3GB的内存,在我的系统上运行良好 program.cs:
using System;
namespace arrtest
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Is64BitProcess :"+ Environment.Is64BitProcess);
int [] arr = new int[13805*55223];
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
</configuration>
你能给我们看看你的代码吗13'805*55'223=762'353'515
所以如果你有足够多的int值,那么你已经使用了~3GB的内存…你确定你的应用程序真的是以64位运行吗?试着看着你做错了什么,但这需要一个通灵师来猜出它可能是什么。只是不要使用锯齿状数组。它不仅避免了限制,而且速度更快。代码很简单,比如:double[,]a=newdouble[138055223];谢谢你,托尼鲁什!我现在正按照你的建议处理这个错误。唯一的变化是我在一个单独的app.config中有“gcAllowVeryLargeObjects”,但现在在一个app.config中有了所有!我不确定这是否是我的问题的原因!如果使用double(64位值)而不是int(32位值),则需要双倍的内存量(~6GB)。因此,至少需要8GB的主内存,或者更适合使用16GB主内存的系统。我无法在8GB系统上运行使用6GB内存的程序,因为我只有5GB可用内存。