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.
Cualquier proceso en un sistema operativo Windows x86 está limitado a 2 gb a menos que haya configurado el modificador / 3 gb en su archivo boot.ini, en cuyo caso un proceso puede usar 3 gb.
fuente
De esta publicación de blog "Recomendaciones para la configuración del grupo de aplicaciones de SharePoint" :
Según mi experiencia, 800 MB es el umbral para máquinas de 32 bits (2-4 GB de RAM). Recicla grupos de aplicaciones antes de lanzar excepciones de "falta de memoria".
fuente
Asegúrese de no configurar el tamaño de la memoria virtual en su grupo de aplicaciones. Si establece este valor en un número fuera del rango permitido, se revertirá a 512 MB. Ver KB923197 .
También tenga en cuenta que si está ejecutando una aplicación ASP.Net, ASP.Net reciclará el grupo al 60% del límite de memoria de 2 GB, o 1.2 GB. Este no es su escenario de ~ 500, pero en aplicaciones de 32 bits con gran uso de memoria, a veces modificamos esto para obtener un poco más de memoria.
fuente
En Windows 2003, puede configurar la Extensión de asignación física (PAE) para utilizar toda la memoria. La memoria predeterminada para un grupo de aplicaciones IIS6 es de 5 MB .
fuente