Eventos ETW de coleta de lixo
Esses eventos coletam informações referentes à coleta de lixo. Eles ajudam no diagnóstico e na depuração, inclusive determinando quantas vezes a coleta de lixo foi executada, a quantidade de memória liberada durante a coleta de lixo e assim por diante.
Esta categoria consiste nos seguintes eventos:
- Evento GCStart_V1
- Evento GCEnd_V1
- Evento GCHeapStats_V1
- GCHeapStats_V2 Event
- Evento GCCreateSegment_V1
- Evento GCFreeSegment_V1
- Evento GCRestartEEBegin_V1
- Evento GCRestartEEEnd_V1
- Evento GCSuspendEE_V1
- Evento GCSuspendEEEnd_V1
- Evento GCAllocationTick_V2
- GCAllocationTick_V3 Event
- Evento GCFinalizersBegin_V1
- Evento GCFinalizersEnd_V1
- Evento GCCreateConcurrentThread_V1
- Evento GCTerminateConcurrentThread_V1
Evento GCStart_V1
A tabela a seguir mostra a palavra-chave e o nível. Para obter mais informações, consulte Palavras-chaves e níveis CLR ETW.
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCStart_V1 |
1 | Uma coleta de lixo foi iniciada. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
Contagem | win:UInt32 | Coleta de lixo número n. |
Profundidade | win:UInt32 | A geração que está sendo coletada. |
Motivo | win:UInt32 | Motivo do gatilho da coleta de lixo: 0x0 – Alocação de heap de objetos pequenos. 0x1 – Induzido. 0x2 – Memória insuficiente. 0x3 – Vazio. 0x4 – Alocação de heap de objetos grandes. 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 - Testes 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 fosse um GC de compactação. |
Tipo | win:UInt32 | 0x0 – A coleta de lixo de bloqueio ocorreu fora da coleta de lixo em segundo plano. 0x1 – Coleta de lixo em segundo plano. 0x2 – A coleta de lixo de bloqueio ocorreu durante a coleta de lixo em segundo plano. |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
Evento GCEnd_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCEnd_V1 |
2 | A coleta de lixo foi encerrada. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
Contagem | win:UInt32 | Coleta de lixo número n. |
Profundidade | win:UInt32 | A geração que foi coletada. |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
Evento GCHeapStats_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Descrição |
---|---|---|
GCHeapStats_V1 |
4 | Mostra as estatísticas de heap no final de cada coleta de lixo. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
GenerationSize0 | win:UInt64 | O tamanho, em bytes, da memória de geração 0. |
TotalPromotedSize0 | win:UInt64 | O número de bytes que são 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 que são 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 coleta. |
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 coleta. |
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 (imóveis) fixados. |
SinkBlockCount | win:UInt32 | O número de blocos de sincronização em uso. |
GCHandleCount | win:UInt32 | O número de manipuladores de coleta de lixo em uso. |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
GCHeapStats_V2 Event
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Descrição |
---|---|---|
GCHeapStats_V2 |
4 | Mostra as estatísticas de heap no final de cada coleta de lixo. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
GenerationSize0 | win:UInt64 | O tamanho, em bytes, da memória de geração 0. |
TotalPromotedSize0 | win:UInt64 | O número de bytes que são 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 que são 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 coleta. |
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 coleta. |
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 (imóveis) fixados. |
SinkBlockCount | win:UInt32 | O número de blocos de sincronização em uso. |
GCHandleCount | win:UInt32 | O número de manipuladores de coleta de lixo em uso. |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
GenerationSize4 | win:UInt64 | O tamanho, em bytes, do heap do objeto fixado. |
TotalPromotedSize4 | win:UInt64 | O número de bytes que sobreviveram no heap do objeto fixado após a última coleta. |
Evento GCCreateSegment_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado 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 é acionado para cada segmento existente. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | 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 da instância do CLR ou do CoreCLR. |
Observe que o tamanho de segmentos alocados pelo coletor de lixo é específico à implementação e está sujeito a alterações a qualquer momento, incluindo em atualizações periódicas. Seu aplicativo nunca deve fazer suposições sobre o tamanho de um segmento em particular nem depender dele, tampouco deve tentar configurar a quantidade de memória disponível para alocações de segmento.
Evento GCFreeSegment_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCFreeSegment_V1 |
6 | Um segmento de coleta de lixo foi liberado. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
Endereço | win:UInt64 | O endereço do segmento. |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
Evento GCRestartEEBegin_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCRestartEEBegin_V1 |
7 | A continuidade da suspensão do Common Language Runtime foi iniciada. |
Nenhum dado do evento.
Evento GCRestartEEEnd_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCRestartEEEnd_V1 |
3 | A continuidade da suspensão do Common Language Runtime foi encerrada. |
Nenhum dado do evento.
Evento GCSuspendEE_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCSuspendEE_V1 |
9 | Início da suspensão do mecanismo de execução da coleta de lixo. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
Motivo | win:UInt16 | 0x0 – Outros. 0x1 – Coleta de lixo. 0x2 – Desligamento do domínio do aplicativo. 0x3 – Densidade do código. 0x4 – Desligamento. 0x5 – Depurador. 0x6 – Preparação para a coleta de lixo. |
Contagem | win:UInt32 | A contagem de GC no momento. Normalmente, você verá um evento de Início de GC posterior depois disso e sua Contagem será essa Contagem + 1, conforme aumentamos o Índice de GC durante uma coleta de lixo. |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
Evento GCSuspendEEEnd_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCSuspendEEEnd_V1 |
8 | Fim da suspensão do mecanismo de execução da coleta de lixo. |
Nenhum dado do evento.
Evento GCAllocationTick_V2
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCAllocationTick_V2 |
10 | Cada vez que aproximadamente 100 KB são alocados por heap de objeto. Ou seja, SOH, LOH e POH acumulam seus bytes alocados separadamente. No Server GC, isso é feito por heap. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
AllocationAmount | win:UInt32 | O tamanho de alocação, em bytes. Esse valor é preciso para alocações menores do que o tamanho 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á no heap de objetos pequenos). 0x1 – Alocação de objeto grande (a alocação está no heap de objetos grandes). 0x2 - Alocação de objeto fixo (a alocação está no heap de objeto fixo). |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
AllocationAmount64 | win:UInt64 | O tamanho de 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 fez com que o limite de 100 KB fosse 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) durante a execução da coleta de lixo da estação de trabalho. |
GCAllocationTick_V3 Event
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCAllocationTick_V2 |
10 | Cada vez que aproximadamente 100 KB são alocados por heap de objeto. Ou seja, SOH, LOH e POH acumulam seus bytes alocados separadamente. No Server GC, isso é feito por heap. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
AllocationAmount | win:UInt32 | O tamanho de alocação, em bytes. Esse valor é preciso para alocações menores do que o tamanho 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á no heap de objetos pequenos). 0x1 – Alocação de objeto grande (a alocação está no heap de objetos grandes). 0x2 - Alocação de objeto fixo (a alocação está no heap de objeto fixo). |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
AllocationAmount64 | win:UInt64 | O tamanho de 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 fez com que o limite de 100 KB fosse 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) durante a execução da coleta de lixo da estação de trabalho. |
Endereço | win:Pointer | O endereço do último objeto alocado. |
Evento GCFinalizersBegin_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCFinalizersBegin_V1 |
14 | O início da execução dos finalizadores. |
Nenhum dado do evento.
Evento GCFinalizersEnd_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCFinalizersEnd_V1 |
13 | O fim da execução dos finalizadores. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
Contagem | win:UInt32 | O número de finalizadores que foram executados. |
ClrInstanceID | win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
Evento GCCreateConcurrentThread_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
ThreadingKeyword (0x10000) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCCreateConcurrentThread_V1 |
11 | O thread da coleta de lixo simultânea foi criado. |
Nenhum dado do evento.
Evento GCTerminateConcurrentThread_V1
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informativo (4) |
ThreadingKeyword (0x10000) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCTerminateConcurrentThread_V1 |
12 | O thread da coleta de lixo simultânea foi terminado. |
Nenhum dado do evento.