我正在测试.Net 中的集合有多大。从技术上讲,任何集合对象都可以增长到物理内存的大小。
然后我在一个服务器上测试了下面的代码,它有 16GB 内存,运行 Windows 2003 服务器和 Visual Studio 2008。我测试了 F# 和 C# 代码,并在运行时查看了任务管理器。我可以看到,在大约增长 2GB 内存后,程序因内存不足异常而崩溃。我确实在属性页中将目标平台设置为 x64。
open System.Collections.Generic
let d = new Dictionary<int, int>()
for i=1 to 1000000000 do
d.Add(i,i)
我对C5集合库做了同样的测试。结果是 C5 中的字典可能会用完整个内存。代码使用 C5:
let d = C5.HashDictionary<int, int> ()
for i=1 to 1000000000 do
d.Add(i,i)
有谁知道为什么?