DA0023: tempo de CPU GC alto
Identificação da Regra |
DA0023 |
Categoria |
uso do .NET Framework |
Método de criação de perfil |
Todos |
Message (Mensagem) |
% De tempo em GC é razoavelmente alta.Essa indicação da quantidade de sobrecarga excessiva de coleta de lixo pode afetar a resposta de seu aplicativo.Você pode coletar dados de alocação de memória de .NET e para o objeto informações de tempo de vida para entender o padrão de alocação de memória que seu aplicativo usa melhor. |
Tipo de regra |
Informativo |
Quando você analisa usando a amostragem, a memória .NET ou os métodos de contenção de recurso, você deve coletar pelo menos 10 amostras para disparar esta regra.
Causa
Os dados de desempenho do sistema coletados durante a análise indica que a quantidade de tempo que é gastada na coleta de lixo é significativa comparado com o tempo de processamento total do aplicativo.
Descrição da Regra
Microsoft .NET framework Common Language Runtime (CLR) fornece um mecanismo automático de gerenciamento de memória que use um coletor de lixo para recuperar a memória dos objetos que o aplicativo já não usa.O coletor de lixo geração- é orientado por, com base na suposição que muitas alocações sejam efêmeros.As variáveis locais, por exemplo, devem ser breves.Inicie o recém-criado de objetos na geração gen 0 (0), e em andamento para a geração 1 quando sobrevive a uma execução de coleta de lixo, e transições finalmente a geração 2 se o aplicativo ainda o usa.
Os objetos da geração 0 são coletados com frequência e geralmente muito eficiente.Os objetos da geração 1 são coletados com menos frequência e menos eficiente.Finalmente, os objetos duradouros na geração 2 devem ser coletados mesmo com menos frequência.A coleção de geração 2, que é uma execução completa de coleta de lixo, também é a operação mais cara.
Esta regra é disparada quando a quantidade de tempo que está gastada na coleta de lixo é significativa comparado com o tempo de processamento total do aplicativo.
Observação |
---|
Quando a proporção de tempo que estão gasto na coleta de lixo excessiva é comparada com o tempo de processamento total de aplicativo, DA0024: tempo de GPU GC excessivo avisa que aciona em vez desta regra. |
Como investigar um aviso
Clique duas vezes na mensagem na janela lista de erros para navegar na Exibição de marcas de dados de perfil.Localizar a coluna de Memória de .NET CLR \ % de tempo em GC .Determine se há etapas específicas de execução do programa onde a sobrecarga de coleta de lixo gerenciado de memória é pesada mais do que as outras fases.Compare os valores do % de tempo no valor de GC a taxa de coleta de lixo informada em # de coleções de Gen 0, # de coleções de Gen 1, valores de # de coleções de Gen 2 .
O % de tempo no valor de GC tenta relatar a quantidade de tempo que um aplicativo gasta executar a coleta de lixo de acordo com a quantidade total de processamento.Lembre-se de que há condições quando os % de tempo no valor de GC podem variar um valor alto, mas não são devido à coleta de lixo excessiva.Para obter mais informações sobre a forma como o % de tempo no valor de GC é calculado, consulte Diferença entre os dados de Desempenho relatados por diferentes ferramentas – 4 a entrada de Maoni's Weblog no MSDN.Se as falhas de página estão ocorrendo ou o aplicativo é cancelado por outro trabalho de prioridade alta no computador durante a coleta de lixo, os % de tempo nesses atrasos GC vez refletirão adicionais.