Una colección muy grande en .Net provoca una excepción de falta de memoria

Estoy probando qué tan grande podría ser una colección en .Net. Técnicamente, cualquier objeto de colección podría crecer hasta el tamaño de la memoria física.

Luego probé el siguiente código en un servidor, que tiene 16 GB de memoria, ejecutando el servidor Windows 2003 y Visual Studio 2008. Probé el código F # y C #, y miré el Administrador de tareas mientras lo ejecutaba. Puedo ver que después de aumentar la memoria de 2 GB, el programa se bloqueó con la excepción de falta de memoria. Establecí la plataforma de destino en x64 en la página de propiedades.

open System.Collections.Generic

let d = new Dictionary<int, int>()

for i=1 to 1000000000 do
    d.Add(i,i)

Hice una misma prueba a laC5 biblioteca de colección El resultado es que el diccionario en C5 podría usar toda la memoria. El código usa C5:

let d = C5.HashDictionary<int, int> ()
for i=1 to 1000000000 do
    d.Add(i,i)

Alguien sabe por qué?

Respuestas a la pregunta(4)

Su respuesta a la pregunta