ocasionalmente obtém exceções OutOfMemory de um aplicativo .NET ocupado
A resposta para isso é muito complexa para caber em uma resposta. Consulte " Ajustando o desempenho do aplicativo .NET " para obter um tratamento completo do assunto.
Aqui está um resumo muito simplificado (mas ainda bastante bom) de Bruno Jouhier :
Além disso, o tempo de execução do .NET não permite que você vá até 2 GB. O coletor de lixo trabalha copiando objetos ativos, portanto, precisa de uma quantidade razoável de espaço para executar suas cópias.
Editar:
Aqui está minha tentativa de explicação ...
Se você está se perguntando qual é o tamanho máximo da memória do processo de trabalho (conforme relatado pelo Gerenciador de Tarefas) para um Processo de Trabalho do ASP.NET em x86, a resposta é "depende" .
Em qualquer tipo de código gerenciado, como Java ou .NET, o programador renuncia ao controle refinado da memória como penitência por não ter que lidar com indicadores. À medida que um programa é executado, o Heap and Stack será limpo periodicamente pelo Garbage Collector .
Especificamente em relação ao ASP.NET, o coletor de lixo é executado dentro do mesmo processo de trabalho que o site. O GC consome memória própria. Como muito memória é inteiramente uma função de como o código do seu aplicativo é escrito. Um aplicativo pode usar 1,8 GB de memória enquanto outro pode engasgar com 500 MB. Para entender por que , você precisa criar um perfil para seu aplicativo específico.