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