Como posso descobrir quanta memória um domínio de aplicativo .Net está consumindo?
Pergunta
Estou tentando restringir programaticamente o consumo de memória de plug-ins em execução em um AppDomain .Net, mas não consigo encontrar nenhum parâmetro de configuração para isso, nem uma maneira de consultar um AppDomain para descobrir quanta memória ele está consumindo .Alguma ideia?
Solução
Aqui está a documentação para consultar o uso de memória de um processo.Não é o mesmo que AppDomain, mas pode ser um ponto de partida.
http://msdn.microsoft.com/en-us/library/s80a75e5(VS.80).aspx
Você também pode perguntar ao GC o que ele acha que está alocado atualmente.
http://msdn.microsoft.com/en-us/library/system.gc.gettotalmemory(VS.71).aspx
Outras dicas
Pergunta antiga, mas entretanto (desde o .Net framework 4.0) uma nova solução está disponível.Você terá que habilitar o ARM (Monitoramento de recursos de domínio de aplicativo).A partir daí, você pode solicitar informações sobre o tempo total consumido do processador, uso de memória, etc.
Não tenho certeza programaticamente, mas Explorador de processos pode dizer quanta memória um AppDomain .net está usando.Talvez eles tenham alguma documentação sobre como estão consultando essas informações.
Usando a interoperabilidade mscoree.CorRuntimeHostClass de C:\WINDOWS\Microsoft.NET\Framework\vXXXXXX\mscoree.tlb