¿Cuál es la memoria máxima que el recolector de basura puede asignar para un proceso .NET? Cuando compilo en x64, Process.GetCurrentProcess.MaxWorkingSet arroja unos 1,4 GB, pero cuando compilo AnyCPU (x64) se devuelve el mismo número. Para x64 debería ser más parecido al valor "Límite" que se muestra en el Administrador de tareas. ¿Cómo puedo obtener el número correcto que causará OutOfMemory-Exceptions cuando se excede en todos los casos?Memoria máxima. Un proceso .NET puede asignar
Algunos ejemplos lo que el método debe devolver:
1) Configuración de la máquina: 64 en Windows, la memoria física de 4 GB, 4 GB de archivo de página
-Como proceso de 64 bits: 8 GB
-Como proceso de 32 bits : 1,4 GB
2) Configuración de la máquina: 64 en Windows, 1 GB de memoria física, archivo de página 2 GB
-Como proceso de 64 bits: 3GB
-Como proceso de 32 bits: 1,4 GB
3) Configuración de la máquina: x32 en Windows, la memoria física de 4 GB, 4 GB de archivo de página
-Como proceso de 64 bits: No sucederá
-Como proceso de 32 bits: 1,4 GB
4) Configuración de la máquina: x32 en Windows, la memoria física de 512 MB, 512 MB de archivo de página
-Como proceso de 64 bits: no sucederá
-Como proceso de 32 bits: 1.0GB
Aquí hay una publicación interesante que habla de los máximos teóricos y rangos en los que un proceso .NET comenzará a ver excepciones de memoria: http://blogs.msdn.com/b/ tom/archive/2008/04/10/chat-pregunta-memory-limits-for-32-bit-and-64-bit-processes.aspx –