Rastrear vazamento de memória no WPF
-
03-07-2019 - |
Pergunta
Contexto: Estamos construindo uma estrutura para entrega rápida de aplicativos WPF. Esta estrutura usa Autofac como um contêiner IoC e também usa regiões de Prism v1. Estamos programando tarefas com extensões paralelas da Microsoft.
Estamos enfrentando o seguinte problema: Quando iniciar a aplicação com vistas vazias (assim apenas uma concha com as regiões e os controles de espaço reservado), a memória permanecerá estável por cerca de 60 segundos e depois disso ele vai aumentar a cada segundo com 4KB, então 4kb, depois que 8kb. Então, a cada 3 segundos temos 16Kb adicionado à nossa pressão de memória.
O que temos tentou rastrear o vazamento. Comecei usando dotTrace mas eu não podia ver nenhuma diferença entre 2 fotografias tiradas 30 minutos de intervalo. Mudou-se para .NET perfil de memória, porque me dá mais informações mas novamente não podemos ver as diferenças entre 2 instantâneos. Podemos ver que um número de objetos são criados, mas eles são removidos e também resulta em um delta de 0. Então, mudei-me para windbg mas o resultado é o mesmo.
Outra coisa estranha é que quando começamos sysinternals dbgvw não vemos quaisquer chamadas feitas em nossas aplicações.
Você tem alguma sugestão de que poderíamos tentar próxima para descobrir o que / quem é o culpado?
Solução 2
Como se vê que era um erro dentro WPF ea solução foi criar um manipulador de janela como primeiro objeto ou algo assim. Obrigado rapazes
Outras dicas
Se você está à procura de vazamentos não gerenciados e estão usando o Visual Studio você pode obter informações surpreendentemente útil usando o construído em funções CRT: