Analisar caminho quente para root na ferramenta Uso de memória
Ao criar o perfil do código .NET na ferramenta de criação de perfil do Memory Usage no Visual Studio, o caminho para o raiz pode ajudá-lo a identificar objetos retidos no heap que estão causando problemas de uso de memória. No contexto do uso de memória, o caminho ativo é uma cadeia de referência identificada pelo profiler que aponta para um objeto raiz que é uma fonte potencial de problemas de memória.
Ao calcular o tamanho inclusivo de um objeto (a quantidade total de memória retida na pilha mantendo o objeto vivo), geralmente é útil reduzir o gráfico de heap fortemente conectado em uma árvore. Ao contrário de um grafo, um nó em uma árvore tem arbitrariamente muitos filhos, mas apenas um pai. Em vez de considerar todos os caminhos possíveis para raiz para um objeto, escolher o caminho mais provável para raiz usando várias heurísticas normalmente é suficiente para encontrar a cadeia de referência que, se removida, tornará o objeto elegível para coleta de lixo. Algumas dessas heurísticas incluem priorizar o caminho mais curto até à raiz, determinados tipos de raiz e caminhos de código de utilizador. Por vários motivos, essa estratégia nem sempre encontra a cadeia de retenção mais interessante ou mais duradoura, mas geralmente fornece um ponto de partida útil em uma investigação de uso de memória.
Na árvore Caminhos para Raiz da ferramenta Uso da Memória, o caminho com o ícone de chama () é chamado de caminho ativo para a raiz.
Exemplo
Use a opção Mostrar somente caminhos quentes para filtrar a exibição no painel Caminhos para Raiz.
Neste exemplo, há um controle WPF (AttachToProcess.Dialog
) sendo vazado por meio de uma ligação que, em última análise, é enraizada por um AutomationPeer
. Na visualização filtrada, o caminho de retenção é óbvio; apenas o caminho direto para a raiz é visível.
Com a opção desativada, fica claro que existem centenas de vínculos, e a maioria dos caminhos de expansão leva a becos sem saída que se repetem. Sem o indicador visual, é tedioso classificar milhares de possíveis caminhos de retenção para encontrar uma razão candidata para o vazamento.
Ver também
Para obter mais informações sobre a ferramenta de uso de memória do Visual Studio, consulte