Compartilhar via


Eventos ETW de coleta de lixo

Esses eventos coletam informações relativas à coleta de lixo. Eles ajudam no diagnóstico e na depuração, incluindo determinar quantas vezes a coleta de lixo foi executada, a quantidade de memória liberada durante a coleta de lixo e assim por diante.

Essa categoria consiste nos seguintes eventos:

Evento GCStart_V1

A tabela a seguir mostra a palavra-chave e o nível. Para obter mais informações, consulte palavras-chave e níveis do CLR ETW.

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCStart_V1 1 Uma coleta de lixo foi iniciada.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
Contar win:UInt32 O ncoleta de lixo.
Profundidade win:UInt32 A geração que está sendo coletada.
Razão win:UInt32 Por que a coleta de lixo foi disparada:

0x0 – alocação de heap de objeto pequeno.

0x1 - Induzido.

0x2 - Memória baixa.

0x3 - Vazio.

0x4 – Alocação de heap de objeto grande.

0x5 – Espaço insuficiente (para heap de objetos pequenos).

0x6 - Espaço insuficiente (para heap de objetos grandes).

0x7 - Induzido, mas não forçado como bloqueio.

0x8 – Teste de estresse.

0x9 - O thread do finalizador observou que o processo está em memória baixa e induziu um GC.

0x10 - O código do usuário induziu o GC e solicitou que ele fosse um GC de compactação.
Tipo win:UInt32 0x0 - O bloqueio da coleta de lixo ocorreu fora da coleta de lixo em segundo plano.

0x1 – coleta de lixo em segundo plano.

0x2 - O bloqueio da coleta de lixo ocorreu durante a coleta de lixo em segundo plano.
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.

Evento GCEnd_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCEnd_V1 2 A coleta de lixo terminou.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
Contar win:UInt32 O ncoleta de lixo.
Profundidade win:UInt32 A geração que foi coletada.
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.

Evento GCHeapStats_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Descrição
GCHeapStats_V1 4 Mostra as estatísticas de heap no final de cada coleta de lixo.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
GenerationSize0 win:UInt64 O tamanho, em bytes, da memória da geração 0.
TotalPromotedSize0 win:UInt64 O número de bytes promovidos da geração 0 para a geração 1.
GenerationSize1 win:UInt64 O tamanho, em bytes, da memória de geração 1.
TotalPromotedSize1 win:UInt64 O número de bytes promovidos da geração 1 para a geração 2.
GenerationSize2 win:UInt64 O tamanho, em bytes, da memória de geração 2.
TotalPromotedSize2 win:UInt64 O número de bytes que sobreviveram na geração 2 após a última coleção.
GenerationSize3 win:UInt64 O tamanho, em bytes, do heap de objetos grandes.
TotalPromotedSize3 win:UInt64 O número de bytes que sobreviveram no heap de objetos grandes após a última coleção.
FinalizationPromotedSize win:UInt64 O tamanho total, em bytes, dos objetos que estão prontos para finalização.
FinalizationPromotedCount win:UInt64 O número de objetos que estão prontos para finalização.
PinnedObjectCount win:UInt32 O número de objetos fixados (inováveis).
SinkBlockCount win:UInt32 O número de blocos de sincronização em uso.
GCHandleCount win:UInt32 O número de identificadores de coleta de lixo em uso.
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.

Evento GCHeapStats_V2

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Descrição
GCHeapStats_V2 4 Mostra as estatísticas de heap no final de cada coleta de lixo.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
GenerationSize0 win:UInt64 O tamanho, em bytes, da memória da geração 0.
TotalPromotedSize0 win:UInt64 O número de bytes promovidos da geração 0 para a geração 1.
GenerationSize1 win:UInt64 O tamanho, em bytes, da memória de geração 1.
TotalPromotedSize1 win:UInt64 O número de bytes promovidos da geração 1 para a geração 2.
GenerationSize2 win:UInt64 O tamanho, em bytes, da memória de geração 2.
TotalPromotedSize2 win:UInt64 O número de bytes que sobreviveram na geração 2 após a última coleção.
GenerationSize3 win:UInt64 O tamanho, em bytes, do heap de objetos grandes.
TotalPromotedSize3 win:UInt64 O número de bytes que sobreviveram no heap de objetos grandes após a última coleção.
FinalizationPromotedSize win:UInt64 O tamanho total, em bytes, dos objetos que estão prontos para finalização.
FinalizationPromotedCount win:UInt64 O número de objetos que estão prontos para finalização.
PinnedObjectCount win:UInt32 O número de objetos fixados (inováveis).
SinkBlockCount win:UInt32 O número de blocos de sincronização em uso.
GCHandleCount win:UInt32 O número de identificadores de coleta de lixo em uso.
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.
GenerationSize4 win:UInt64 O tamanho, em bytes, do heap de objeto fixado.
TotalPromotedSize4 win:UInt64 O número de bytes que sobreviveram no heap de objetos fixados após a última coleção.

Evento GCCreateSegment_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCCreateSegment_V1 5 Um novo segmento de coleta de lixo foi criado. Além disso, quando o rastreamento é habilitado em um processo que já está em execução, esse evento é gerado para cada segmento existente.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
Endereço win:UInt64 O endereço do segmento.
Tamanho win:UInt64 O tamanho do segmento.
Tipo win:UInt32 0x0 - Heap de objetos pequenos.

0x1 – Heap de objetos grandes.

0x2 – heap somente leitura.
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.

Observe que o tamanho dos segmentos alocados pelo coletor de lixo é específico da implementação e está sujeito a alterações a qualquer momento, inclusive em atualizações periódicas. Seu aplicativo nunca deve fazer suposições sobre ou depender de um determinado tamanho de segmento, nem deve tentar configurar a quantidade de memória disponível para alocações de segmento.

Evento GCFreeSegment_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCFreeSegment_V1 6 Um segmento de coleta de lixo foi liberado.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
Endereço win:UInt64 O endereço do segmento.
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.

Evento GCRestartEEBegin_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCRestartEEBegin_V1 7 A retomada da suspensão do Common Language Runtime foi iniciada.

Nenhum dado de evento.

Evento GCRestartEEEnd_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCRestartEEEnd_V1 3 A retomada da suspensão do Common Language Runtime foi encerrada.

Nenhum dado de evento.

Evento GCSuspendEE_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCSuspendEE_V1 9 Início da suspensão do mecanismo de execução para coleta de lixo.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
Razão win:UInt16 0x0 - Outros.

0x1 – Coleta de lixo.

0x2 – Desligamento do domínio do aplicativo.

0x3 – Pitching de código.

0x4 - Desligamento.

0x5 - Depurador.

0x6 – Preparação para coleta de lixo.
Contar win:UInt32 A contagem de GC no momento. Normalmente, você veria um evento GC Start subsequente após isso, e sua Contagem seria esta Contagem + 1 à medida que aumentamos o índice GC durante uma coleta de lixo.
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.

Evento GCSuspendEEEnd_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCSuspendEEEnd_V1 8 Fim da suspensão do mecanismo de execução para coleta de lixo.

Nenhum dado de evento.

Evento GCAllocationTick_V2

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Detalhado (5)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCAllocationTick_V2 10 Cada vez que aproximadamente 100 KB é alocado por heap de objeto. Ou seja, SOH, LOH e POH acumulam seus bytes alocados separadamente. No GC do Servidor, isso é feito por heap.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
AllocationAmount win:UInt32 O tamanho da alocação, em bytes. Esse valor é preciso para alocações menores que o comprimento de um ULONG (4.294.967.295 bytes). Se a alocação for maior, esse campo conterá um valor truncado. Use AllocationAmount64 para alocações muito grandes.
AllocationKind win:UInt32 0x0 – alocação de objeto pequeno (a alocação está em um heap de objetos pequeno).
0x1 - Alocação de objeto grande (a alocação está no heap de objetos grandes).
0x2 - Alocação de objeto fixada (a alocação está no heap de objetos fixado).
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.
AllocationAmount64 win:UInt64 O tamanho da alocação, em bytes. Esse valor é preciso para alocações muito grandes.
TypeId win:Pointer O endereço da MethodTable. Quando há vários tipos de objetos que foram alocados durante esse evento, esse é o endereço da MethodTable que corresponde ao último objeto alocado (o objeto que causou o limite de 100 KB a ser excedido).
TypeName win:UnicodeString O nome do tipo que foi alocado. Quando há vários tipos de objetos que foram alocados durante esse evento, esse é o tipo do último objeto alocado (o objeto que fez com que o limite de 100 KB fosse excedido).
HeapIndex win:UInt32 O heap em que o objeto foi alocado. Esse valor é 0 (zero) ao ser executado com a coleta de lixo da estação de trabalho.

Evento GCAllocationTick_V3

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Detalhado (5)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCAllocationTick_V2 10 Cada vez que aproximadamente 100 KB é alocado por heap de objeto. Ou seja, SOH, LOH e POH acumulam seus bytes alocados separadamente. No GC do Servidor, isso é feito por heap.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
AllocationAmount win:UInt32 O tamanho da alocação, em bytes. Esse valor é preciso para alocações menores que o comprimento de um ULONG (4.294.967.295 bytes). Se a alocação for maior, esse campo conterá um valor truncado. Use AllocationAmount64 para alocações muito grandes.
AllocationKind win:UInt32 0x0 – alocação de objeto pequeno (a alocação está em um heap de objetos pequeno).
0x1 - Alocação de objeto grande (a alocação está no heap de objetos grandes).
0x2 - Alocação de objeto fixada (a alocação está no heap de objetos fixado).
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.
AllocationAmount64 win:UInt64 O tamanho da alocação, em bytes. Esse valor é preciso para alocações muito grandes.
TypeId win:Pointer O endereço da MethodTable. Quando há vários tipos de objetos que foram alocados durante esse evento, esse é o endereço da MethodTable que corresponde ao último objeto alocado (o objeto que causou o limite de 100 KB a ser excedido).
TypeName win:UnicodeString O nome do tipo que foi alocado. Quando há vários tipos de objetos que foram alocados durante esse evento, esse é o tipo do último objeto alocado (o objeto que fez com que o limite de 100 KB fosse excedido).
HeapIndex win:UInt32 O heap em que o objeto foi alocado. Esse valor é 0 (zero) ao ser executado com a coleta de lixo da estação de trabalho.
Endereço win:Pointer O endereço do último objeto alocado.

Evento GCFinalizersBegin_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCFinalizersBegin_V1 14 O início da execução de finalizadores.

Nenhum dado de evento.

Evento GCFinalizersEnd_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCFinalizersEnd_V1 13 O fim da execução de finalizadores.

A tabela a seguir mostra os dados do evento:

Nome do campo Tipo de dado Descrição
Contar win:UInt32 O número de finalizadores que foram executados.
ClrInstanceID win:UInt16 ID exclusiva para a instância de CLR ou CoreCLR.

Evento GCCreateConcurrentThread_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)
ThreadingKeyword (0x10000) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCCreateConcurrentThread_V1 11 O thread de coleta de lixo simultâneo foi criado.

Nenhum dado de evento.

Evento GCTerminateConcurrentThread_V1

A tabela a seguir mostra a palavra-chave e o nível:

Palavra-chave para elevar o evento Nível
GCKeyword (0x1) Informativo (4)
ThreadingKeyword (0x10000) Informativo (4)

A tabela a seguir mostra as informações do evento:

Acontecimento ID do evento Gerado quando
GCTerminateConcurrentThread_V1 12 O thread de coleta de lixo simultâneo foi encerrado.

Nenhum dado de evento.

Consulte também

  • de eventos ETW CLR