Compartilhar via


DA0024: Tempo de CPU excessiva do GC

Identificação da regra

DA0024

<strong>Categoria</strong>

.NET Framework uso

Método de criação de perfil

Todos

Message (Mensagem)

% Time no GC é muito alto.Há uma quantidade excessiva de sobrecarga de coleta de lixo.

Tipo de regra

Aviso

Quando você cria o perfil usando a amostragem.NET métodos de contenção de memória ou recursos, você deve coletar pelo menos 10 amostras para disparar esta regra.

Causa

Os dados de desempenho do sistema que foram coletados durante perfilação indicam que a quantidade de tempo gasto na coleta de lixo é excessivamente alta em comparação com o tempo de processamento total do aplicativo.

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 uma 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 com freqüência 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 coleta de lixo completa, também é a operação mais cara.

Essa regra é acionado quando a quantidade de tempo gasto na coleta de lixo é excessivamente alta se comparado com o tempo de processamento total do aplicativo.

ObservaçãoObservação

Quando a proporção de tempo gasto na coleta de lixo é significativo, mas não excessivos em comparação com o tempo de processamento total do aplicativo, o DA0023: Tempo de alta utilização da CPU de GC é acionado de aviso, em vez de essa regra.

Como investigar um aviso

Clique duas vezes a mensagem na janela lista de erros para navegar até o Exibição de marcas dos dados de criação de perfil.Encontrar o .NET CLR Memory\% Time no GC coluna.Determine se existem fases específicas da execução do programa em que a sobrecarga de coleta de lixo de memória gerenciada é maior do que outras fases.Compare os valores dos % Time no GC considera a taxa de coleta de lixo é relatado no n º de coletas de Gen 0, n º de coletas de Gen 1, n º de coletas de Gen 2 valores.

O % Time no valor de GC tenta informar a quantidade de tempo que um aplicativo gasta executando proporcional à quantidade total de processamento de coleta de lixo.Lembre-se de que há circunstâncias, quando o % Time no valor de GC pode relatar um valor muito elevado, mas não é por causa de coleta de lixo excessiva.Para obter mais informações sobre a maneira como o % Time no valor de GC é calculado, consulte o Diferença entre Perf dados relatados por ferramentas diferentes – 4 entrada do Maoni's Weblog no MSDN.Se ocorrerem falhas de página ou o aplicativo é superado por outros trabalhos de prioridade mais alto na máquina durante a coleta de lixo, o % Time no contador de GC irá refletir esses atrasos.