Compartilhar via


DA0023: Tempo de alta utilização da CPU de GC

Identificação da regra

DA0023

<strong>Categoria</strong>

.NET Framework uso

Método de criação de perfil

Todos

Message (Mensagem)

% Time no GC é muito alta.Essa indicação da quantidade excessiva de sobrecarga de coleta de lixo poderia afetar a capacidade de resposta do seu aplicativo.Você pode coletar.NET memória alocação dados e o objeto de tempo de vida informações para compreender o padrão de alocação de memória, que o aplicativo usa o melhor.

Tipo de regra

Informativo

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

Dados de desempenho do sistema que são coletados durante perfilação indicam que a quantidade de tempo é gasto na coleta de lixo é significativa 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 o período de tempo é gasto na coleta de lixo é significativo em comparação com o tempo de processamento total do aplicativo.

ObservaçãoObservação

Quando a proporção de tempo é gasto na coleta de lixo é excessiva em comparação com o tempo de processamento total do aplicativo, o DA0024: Tempo de CPU excessiva do 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.