Necesito crear una gran lista de cadenas y mantenerla en la memoria, sin embargo, al generarla, se lanza una OutOfMemoryException. De acuerdo con Resource Monitor, todavía tengo 1GB de memoria disponible. Encontré this KB article abordando el problema, pero parece que debería haber sido reparado en el framework 1.1 SP1 (estoy usando 3.5 sp1).OutOfMemoryException lanzada mientras la memoria aún está disponible
¿Alguien puede arrojar algo de luz sobre lo que sucede detrás de escena? ¿El marco .net limita la cantidad de memoria que puede ser utilizada por un único proceso (en un sistema de 32 bits)? Si es así, puedo ver por qué, pero lo que no tiene sentido es que la aplicación solo está usando 1.6 GB y aún le quedan ~ 1GB al sistema.
Editar - Para los que pidió que aquí hay alguna información más en profundidad:
Tengo una lista (Sí, podría utilizar algo más, pero sólo estoy de prototipos en este momento.), Genero una cadena aleatoria haciendo un Guid.NewGuid(). ToString(), y tírelo a la lista. Lo que intento hacer es generar una lista con tantos elementos como pueda, y probar diferentes métodos para buscar uno específico. Mi primera suposición fue que algo de fragmentación está ocurriendo, pero dejé todo excepto el código a continuación, y todavía sucede. No creo que este pequeño fragmento pueda crear mucha fragmentación, pero probablemente estoy equivocado.
List<string> blah = new List<string>();
for (int i = 0; i < 50000000; i++)
{
blah.Add(Guid.NewGuid().ToString());
}
¿Puede proporcionar un fragmento de código de dónde está llegando a OutOfMemoryException? –
¿Qué estructura de datos estás usando? ¿Lista? –
RichardOD