哈希表 - 内存不足

And*_*rew 4 c# memory hashtable

我在我的c#应用程序中使用Hashtable.我正在加载数百万的密钥,但是在应用程序超过3.7GB的RAM后,它给了我一个"内存不足"的例外.

我使用的是x64操作系统,而且电脑有16GB的内存.我在考虑这可能是x86的限制.我将构建类型更改为x64,但仍然出现错误.

.net中的对象是否有最大内存大小?我可以做些什么来使用所有内存吗?

谢谢,安德鲁

Rub*_*ias 8

看一下之前的答案:.NET Max Memory即使对于x64程序集,也要使用2GB

2GB限制适用于每个对象.用于所有对象的总内存可能超过2GB.


Guf*_*ffa 6

用a Dictionary<,>代替HashTable.在HashTable键和值都是对象,所以如果它们是值类型,它们将被装箱.A Dictionary可以将值类型作为键和/或值,使用较少的内存.例如,如果您使用intas键,则每个将使用28个字节,HashTable而在a中它们仅使用4个字节Dictionary.

如果键和值都是值类型并且使用少于8个字节,那么Dictionary将能够容纳更多的项目HashTable.