gpt4 book ai didi

c# - 创建巨大的字典

转载 作者:太空狗 更新时间:2023-10-29 22:58:18 26 4
gpt4 key购买 nike

在寻找素数的过程中,我已经问过这个问题:Can't create huge arrays这导致我基于数组字典创建自己的假数组类...:private Dictionary<int, Array> arrays = new Dictionary<int, Array>();

我知道使用下面的代码创建大量 bool 的假数组(如 10 000 000 000):

public class CustomArray
{
private Dictionary<int, Array> arrays = new Dictionary<int, Array>();

public CustomArray(ulong lenght)
{
int i = 0;
while (lenght > 0x7FFFFFC7)
{
lenght -= 0x7FFFFFC7;
arrays[i] = new bool[0x7FFFFFC7];
i++;
}
arrays[i] = new bool[lenght];
}
}

但是当我请求 100 000 000 000 的 CustomArray 时它崩溃了元素。它在第 25 次迭代中运行良好(我的字典包含 25 个 0x7FFFFFC7 元素的数组)但随后它因 OutOfMemory 而崩溃。异常。

作为余数,我有 16GB 内存,VS2013,程序编译为 64 位,我启用了 gcAllowVeryLargeObjects选项,我在任务管理器中没有看到任何内存峰值。


我怎样才能避免这个错误?

最佳答案

100000000000 个 bool 值表示约 93 GB 的内存。您只有 @50 GB(包括默认分配的虚拟内存)。

将它们存储为位(而不是字节),将使您减少到 ~12GB。

System.Collection.BitArray

关于c# - 创建巨大的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30916199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com