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 de volta até a raiz da árvore de chamadas que está ocupando a maior parte da 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.
Selecione Alt+F2 para abrir o Criador de Perfil de Desempenho no Visual Studio.
Marque a caixa de seleção Acompanhamento de Alocação de Objeto 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 acompanhamento pode reduzir a velocidade do aplicativo com perfil. 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 acompanhamento 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 seçã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 Copilot
aparece mesmo que nenhum insight de desempenho específico seja identificado. Selecione o botão Copilot para aprender com Copilot e comece a fazer perguntas.
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 Copilot
aparece mesmo que nenhuma percepção de desempenho específica seja identificada. Selecione Perguntar ao Copilot para aprender com o Copilot e começar a fazer perguntas.
Alocação
A visão Alocação mostra a localização dos objetos que alocam 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 o backtrace dele como uma árvore de chamadas invertida. Somente na exibição Alocação, você pode ver itens dentro da categoria selecionada que ocuparão 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 Próprio (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 na visualizaçã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 um inteiro
- Uma coleção de tipo de valor como uma matriz de inteiros
- Um tipo de referência como string
- Uma coleção de tipos referências, semelhante a um array de strings.
Árvore de chamadas
A exibição Árvore de Chamadas mostra os caminhos de execução da função que contêm objetos que alocam muita memória.
As seguintes informações são exibidas na vista Á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 Caminho Crítico 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 realça o caminho da maioria das alocações, orientando você na 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 colunas a seguir, que mostram as mesmas informações que nas exibições Alocação e Árvore de chamadas:
- Total (alocações)
- Self (Alocações)
- Tamanho total (bytes)
- Tamanho próprio (bytes)
- Tamanho médio (bytes)
Cobrança
A exibição Coleção mostra quantos objetos foram coletados ou retidos durante a coleta de lixo.
As informações a seguir aparecem na 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 o momento 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 objetos grandes depois que o coletor de lixo foi executado.
- A coluna Tamanho do POH mostra o tamanho do heap de objetos fixados 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 sobrevividos 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.