And*_*rew 4 c# memory hashtable
我在我的c#应用程序中使用Hashtable.我正在加载数百万的密钥,但是在应用程序超过3.7GB的RAM后,它给了我一个"内存不足"的例外.
我使用的是x64操作系统,而且电脑有16GB的内存.我在考虑这可能是x86的限制.我将构建类型更改为x64,但仍然出现错误.
.net中的对象是否有最大内存大小?我可以做些什么来使用所有内存吗?
谢谢,安德鲁
用a Dictionary<,>
代替HashTable
.在HashTable
键和值都是对象,所以如果它们是值类型,它们将被装箱.A Dictionary
可以将值类型作为键和/或值,使用较少的内存.例如,如果您使用int
as键,则每个将使用28个字节,HashTable
而在a中它们仅使用4个字节Dictionary
.
如果键和值都是值类型并且使用少于8个字节,那么Dictionary
将能够容纳更多的项目HashTable
.