Entendendo a alocação de memória e os valores de dados de vida útil de objetos nas Ferramentas de Criação de Perfil
A alocação de memória .NET que analisa o método de Visual Studio Ferramentas de Criação de Perfil coleta informações sobre o tamanho e o número de objetos que foram criados em uma alocação ou destruído em uma coleta de lixo e as informações adicionais sobre a pilha de chamada de função quando ocorreu o evento.Uma pilha de chamadas é uma estrutura dinâmico que armazena informações sobre as funções que estão sendo executadas no processador.
Requisitos
- Visual Studio Ultimate, Visual Studio Premium, Visual Studio Professional
O profiler de memória quebra o processador do computador em cada alocação de um objeto do .NET Framework em um aplicativo analisado.Quando os dados de tempo de vida do objeto também são coletados, o profiler quebra o processador depois de cada coleta de lixo do.NET Framework.Os dados são agregados para cada função analisada e para cada tipo de objeto.
Dados de alocação
Quando um evento de .memory ocorre, as contagens totais e os tamanhos dos objetos alocados ou destruída de memória serão incrementados.
Quando um evento de alocação de .memory ocorre, o profiler incrementa a contagem de exemplo para cada função na pilha de chamadas.Quando os dados são coletados, apenas uma função na pilha de chamadas está executando o código no corpo da função.As outras funções na pilha são pais na hierarquia de chamadas de funções que estão aguardando as funções que elas chamado para retornar.
Para o evento de alocação, o profiler incrementa a contagem de exemplo exclusiva da função que está executando as instruções.Como um exemplo exclusivo também é parte dos exemplos (OR inclusivo) da função, a contagem de exemplo inclusiva da função atualmente ativo é incrementada também.
O profiler incrementa a contagem de exemplo inclusiva de todas as funções restantes na pilha de chamadas.
Dados de tempo de vida
O coletor de lixo do .NET Framework gerencia a alocação e a versão de memória para seu aplicativo.Para otimizar o desempenho do coletor de lixo, o heap gerenciado é dividido em três gerações: 0, 1 e 2.O coletor de lixo de tempo de execução armazena novos objetos na geração 0.Os objetos que sobrevivem a coleções são promovidos e armazenados nas gerações 1 e 2.
O coletor de lixo recupera a memória desalocando uma geração inteira de objetos.Para os objetos que o aplicativo analisado criado, a exibição de tempo de vida do objeto exibe o número e o tamanho dos objetos e a geração quando forem recuperados.