DA0005: Coleções freqüentes de GC2

RuleId

DA0005

<strong>Categoria</strong>

.Uso do NET Framework

Método de criação de perfil

.NET memória

Message (Mensagem)

Muitos dos seus objetos estão sendo coletados na coleta de lixo 2 de geração.

Tipo de mensagem

Aviso

Causa

Um número alto de.Objetos de memória NET estão sendo recuperados na coleta de lixo 2 de geração.

Descrição da regra

A Microsoft.NET common language runtime (CLR) fornece um mecanismo de gerenciamento automático de memória que usa um coletor de lixo para recuperar memória de objetos que o aplicativo não usa mais. O coletor de lixo é orientado a geração, com base na suposição de que muitas alocações são de curta duração. Variáveis locais, por exemplo, devem ser curta duração. Objetos recém-criados inicie na geração 0 (Ger 0) e, em seguida, de andamento para a geração 1 quando eles sobrevivem a coleta de lixo executar e finalmente a transição para a geração 2 se o aplicativo ainda usa-los.

Objetos na geração 0 são coletados freqüentemente e geralmente muito eficiente. Objetos na geração 1 são coletados com menos freqüência e menos eficiente. Finalmente, longa vida objetos na geração 2 devem ser coletados com ainda menos freqüência. Coleta de geração 2, que é executar uma coleta de lixo completa, também é mais cara.

Esta regra dispara quando proporcionalmente muitos geração 2 coletas de lixo ocorreram. Se muitos objetos de vida relativamente curta sobrevivem a coleta de geração 1, mas são capazes de serem coletados em um conjunto completo de geração 2, o custo do gerenciamento de memória pode facilmente se tornar excessivo. Para obter mais informações, consulte o crise Mid-life lançar dados sobre o desempenho de Mariani de Rico no site do MSDN.

Como investigar um aviso.

Revisão do Ferramentas de criação de perfil.Exibições de dados de memória de NET relatórios para compreender o padrão do aplicativo de alocação de memória. Use o Exibição de tempo de vida do objeto para determinar quais dos objetos de dados do programa são sobreviventes na geração 2 e sendo recuperada de lá. Use o .Exibição de alocações de memória de NET para determinar o caminho de execução que resultou nessas alocações.

Para obter informações sobre como melhorar o desempenho de coleta de lixo, consulte Noções básicas do coletor de lixo e dicas de desempenho no site da Microsoft. Para obter informações sobre a sobrecarga de coleta de lixo automática, consulte Revelada de Heap de objeto grande.