gpt4 book ai didi

c# - 如果内存可用,为什么会抛出内存不足异常?

转载 作者:IT王子 更新时间:2023-10-28 23:33:51 28 4
gpt4 key购买 nike

我有一个相当简单的 C# 应用程序,它构建了一个大型哈希表。这个哈希表的键是字符串,值是整数。

程序运行良好,直到大约 1030 万个项目被添加到哈希表中,这时在向哈希表添加项目的行上抛出内存不足错误。

根据任务管理器,我的程序只使用了 797mb 的内存,还有超过 2gb 可用。这是一台 32 位的机器,所以我知道一个进程总共只能使用 2gb,但仍然剩下大约 1.2gb 的哈希表应该能够扩展到。

为什么会抛出内存不足错误?

最佳答案

理论上,您可以获得 2GB 的进程,但实际情况是它是 2GB 的连续内存,因此如果您的进程的内存碎片化,您获得的内存会更少。

此外,我怀疑哈希表与大多数数据结构一样,默认情况下会在需要增长时翻倍,从而在添加临界点项目时导致巨大的增长。

如果您提前知道它需要的大小(或有合理的高估),那么在构造函数中指定容量可能会有所帮助。

或者,如果它在内存中并不重要,那么某种数据库解决方案可能会更好,并且如果它确实达到无法放入内存的程度,则可以为您提供更大的灵 active 。

关于c# - 如果内存可用,为什么会抛出内存不足异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3127699/

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