ocasionalmente obtiene excepciones de OutOfMemory de una aplicación .NET ocupada
La respuesta a esto es demasiado compleja para encajar en una respuesta. Consulte " Ajuste del rendimiento de la aplicación .NET " para obtener un tratamiento completo del tema.
Aquí hay un resumen muy simplificado (pero aún bastante bueno) de Bruno Jouhier :
Además, el tiempo de ejecución .NET no te permite subir hasta 2 GB. El recolector de basura funciona copiando objetos vivos, por lo que necesita una buena cantidad de espacio para realizar sus copias.
Editar:
Aquí está mi intento de una explicación ...
Si se pregunta cuál es el tamaño máximo de memoria del proceso de trabajo (según lo informado por el Administrador de tareas) para un Proceso de trabajo ASP.NET en x86, la respuesta es "depende" .
En cualquier tipo de código administrado como Java o .NET, el programador cede el control de la memoria como una penitencia por no tener que lidiar con punteros. A medida que se ejecuta un programa, el recolector de basura limpiará periódicamente el montón y la pila .
Específicamente en lo que respecta a ASP.NET, el recolector de basura se ejecuta dentro del mismo proceso de trabajo que el sitio web. El GC consume memoria propia. La cantidad de memoria es completamente una función de cómo se escribe el código de su aplicación. Una aplicación puede usar 1,8 GB de memoria, mientras que otra puede ahogarse a 500 MB. Para entender por qué , debe perfilar su aplicación específica.