Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode ver quanta memória seu aplicativo usa e quais caminhos de código alocam mais memória usando a ferramenta de Alocação de Objetos do .NET.
Depois de executar a ferramenta, você pode ver os caminhos de execução da função em que os objetos estão sendo alocados. Em seguida, você pode rastrear até a raiz da árvore de chamadas que está ocupando mais memória.
Para obter um tutorial que mostra como melhorar o desempenho usando a ferramenta de Alocação de Objetos do .NET, consulte Estudo de caso: guia para iniciantes para otimizar o código.
Configuração
No projeto do Visual Studio, defina a configuração da solução como Versão e selecione o destino de implantação.
O destino de implantação normalmente corresponde ao nome do projeto, indicando uma implantação local.
O destino da implantação normalmente é o Depurador Local do Windows (ou Computador Local).
Selecione Alt+F2 para abrir o Criador de Perfil de Desempenho no Visual Studio.
Marque a caixa de seleção Rastreamento de Alocação de Objetos do .NET .
Selecione o botão Iniciar para executar a ferramenta.
Se você habilitar a opção Iniciar com a coleção pausada antes de iniciar o criador de perfil, os dados não serão coletados até que você selecione o botão Gravar no modo de exibição de sessão de diagnóstico.
Depois que a ferramenta começar a ser executada, examine o cenário que você deseja criar no seu aplicativo. Em seguida, selecione Parar coleta ou feche seu aplicativo para ver seus dados.
Selecione a guia Alocação . Dados de alocação de memória semelhantes aos seguintes são exibidos.
Agora você pode analisar a alocação de memória dos objetos.
Durante a coleta, a ferramenta de rastreamento pode tornar o aplicativo com perfil mais lento. Se o desempenho da ferramenta de rastreamento ou do aplicativo for lento e se você não precisar rastrear todos os objetos, poderá ajustar a taxa de amostragem. Para fazer isso, selecione o símbolo de engrenagem ao lado da ferramenta de rastreamento na página de resumo do criador de perfil.
Ajuste a taxa de amostragem para a taxa desejada. Essa alteração ajuda a acelerar o desempenho do seu aplicativo durante a coleta e a análise.
Para obter mais informações sobre como tornar a ferramenta mais eficiente, consulte Otimizando as configurações do Criador de Perfil.
Entender seus dados
Na exibição gráfica a seguir, o gráfico superior mostra o número de objetos ativos em seu aplicativo. O gráfico delta do objeto inferior mostra a alteração percentual dos objetos do aplicativo. As barras vermelhas indicam quando a coleta de lixo ocorreu.
Você pode filtrar os dados tabulares para exibir a atividade apenas para um intervalo de tempo especificado selecionando um intervalo de tempo. Quando você faz isso, as informações que aparecem nas guias têm como escopo o intervalo de tempo filtrado.
Você também pode aumentar ou diminuir o zoom do gráfico.
Inspirações
Se algum insight aparecer na visualização Insights , use o link fornecido para obter mais informações sobre o problema identificado.
Obter assistência de IA
Se você tiver o Copilot, poderá obter assistência de IA enquanto estiver examinando os principais insights. O Copilot fornece informações e insights relacionados a um conjunto de insights de desempenho específicos. Com o Copilot, você também pode fazer perguntas sobre objetos usando a maior parte da memória, o que pode ajudá-lo a produzir um código mais eficiente ou econômico.
O botão Perguntar CopilotCaptura de tela do botão Perguntar Copilot. Aparece mesmo que nenhum insights de desempenho específicos sejam identificados. Selecione Fazer Copilot para aprender com Copilot e começar a fazer perguntas.
Alocação
O modo de exibição Alocação mostra o local dos objetos que estão alocando memória e quanta memória esses objetos estão alocando.
As seguintes informações são exibidas na exibição Alocação :
A coluna Type é uma lista de classes e estruturas que ocupam memória. Clique duas vezes em um tipo para exibir seu backtrace como uma árvore de chamadas invertida. Somente no modo de exibição Alocação , você pode ver os itens dentro da categoria selecionada que ocupam memória.
A coluna Alocações mostra o número de objetos que ocupam memória em um determinado tipo ou função de alocação. Essa coluna aparece apenas nos modos de exibição Alocação, Árvore de Chamadas e Funções .
As colunas Bytes e Tamanho Médio (Bytes) não aparecem por padrão. Para mostrá-los, clique com o botão direito do mouse na coluna Tipo ou Alocações e selecione as opções Bytes e Tamanho Médio (Bytes) para adicioná-los ao gráfico.
As duas colunas são semelhantes a Total (Alocações) e Auto (Alocações), exceto que mostram a quantidade de memória ocupada em vez do número de objetos que ocupam memória. Essas colunas aparecem apenas no modo de exibição Alocação .
A coluna Nome do módulo mostra o módulo que contém a função ou o processo que está chamando.
Todas essas colunas são classificáveis. Para as colunas Tipo e Nome do Módulo , você pode classificar os itens em ordem alfabética em ordem crescente ou decrescente. Para Alocações, Bytes e Tamanho Médio (Bytes), você pode classificar itens aumentando ou diminuindo o valor numérico.
Símbolos
Os seguintes símbolos aparecem nas guias Alocação, Árvore de Chamadas e Funções :
- Um tipo de valor como inteiro
- Uma coleção de tipo de valor como uma matriz de inteiros
- Um tipo de referência como string
- Uma coleção de tipo de referência como matriz de cadeias de caracteres
Árvore de chamadas
O modo de exibição Árvore de Chamadas mostra os caminhos de execução de função que contêm objetos que alocam muita memória.
As seguintes informações são exibidas no modo de exibição Árvore de Chamadas :
- A coluna Nome da Função mostra o processo ou o nome da função que contém objetos que alocam memória. A exibição é baseada no nível do nó que você está inspecionando.
- As colunas Total (Alocações) e Tamanho Total (Bytes) mostram o número de objetos alocados e a quantidade de memória usada por uma função e todas as outras funções que ela chama. A coluna Tamanho Total (Bytes) está oculta por padrão.
- As colunas Self (Alocações) e Self-Size (Bytes) mostram o número de objetos alocados e a quantidade de memória usada por uma única função ou tipo de alocação selecionado.
- A coluna Tamanho Médio (Bytes) mostra as mesmas informações que na exibição Alocações . Essa coluna é ocultada por padrão.
- A coluna Nome do módulo mostra o módulo que contém a função ou o processo que está chamando.
As opções adicionais que aparecem no modo de exibição Árvore de Chamadas incluem:
- O botão Expandir Afunilamento realça um caminho de execução de função que contém muitos objetos que estão alocando memória. O algoritmo começa em um nó selecionado e destaca o caminho da maioria das alocações, orientando você em sua investigação.
- O botão Mostrar caminho ativo mostra ou oculta os símbolos de chama que indicam quais nós fazem parte do caminho ativo.
Functions
A exibição Funções mostra processos, módulos e funções que estão alocando memória.
As informações que aparecem na visualização Funções incluem:
A coluna Nome mostra os processos como os nós de nível mais alto. Abaixo dos processos estão os módulos e abaixo dos módulos estão as funções.
As seguintes colunas, que mostram as mesmas informações que nas exibições de árvoreAlocação e Chamada:
- Total (alocações)
- Self (Alocações)
- Tamanho total (bytes)
- Tamanho próprio (bytes)
- Tamanho médio (bytes)
Cobrança
O modo de exibição Coleção mostra quantos objetos foram coletados ou retidos durante a coleta de lixo.
As informações a seguir são exibidas no modo de exibição Coleção .
- A coluna GC mostra a ID dessa coleta de lixo no ciclo de vida do executável.
- A coluna Geração mostra a Geração da coleta de lixo.
- A coluna Tipo de GC mostra o tipo dessa coleta de lixo.
- A coluna Motivo do GC mostra o motivo desse evento de coleta de lixo.
- A coluna Duração da Pausa mostra a hora em que a execução foi bloqueada porque o coletor de lixo precisa de uso exclusivo do heap. Para uma coleta de lixo em segundo plano, esse valor é pequeno.
- A coluna Tamanho do LOH mostra o tamanho do Heap de Objeto Grande depois que o coletor de lixo foi executado.
- A coluna Tamanho do POH mostra o tamanho do Heap de Objeto Fixado depois que o coletor de lixo foi executado.
- A coluna Finalizable Surv (MB) mostra o número de MB de objetos que têm finalizadores (destruidores) que sobreviveram à coleta de lixo.
- A coluna Objetos Fixados mostra o número de objetos fixados que essa coleta de lixo promoveu.
- A coluna Collected mostra o número de objetos que o coletor de lixo coletou.
- A coluna Sobreviveu mostra o número de objetos que sobreviveram depois que o coletor de lixo foi executado.
Quando você seleciona uma linha, essa exibição também mostra gráficos de pizza para visualizar objetos coletados e sobreviventes por tipo.
Ferramentas de filtragem
As exibições Alocações, Árvore de Chamadas e Funções contêm as opções Mostrar Apenas Meu Código e Mostrar Código Nativo e uma caixa de filtro.
- Mostrar Just My Code recolhe sistemas, estruturas e outros códigos que não são de usuário em quadros [Código Externo] para que você possa se concentrar apenas no código. Para obter mais informações, consulte Depurar código do usuário com Just My Code.
- Mostrar código nativo mostra o código nativo dentro do destino de análise e pode incluir código não usuário.
- Com a caixa de filtro, você pode filtrar a coluna Nome ou Nome da função com base no valor fornecido. Insira um valor de cadeia de caracteres na caixa. Em seguida, a tabela mostra apenas os tipos que contêm essa cadeia de caracteres.