我正在测试在 .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)
有人知道为什么吗?