Eventos de coleta de lixo do runtime do .NET
Os eventos descritos nesse artigo coletam informações relativas à coleta de lixo. Eles ajudam no diagnóstico e na depuração, incluindo a determinação de quantas vezes a coleta de lixo foi realizada, quanta memória ela liberou etc. Para saber como usar esses eventos para fins de diagnóstico, veja Registro em log e rastreamento de aplicativos .NET
Evento GCStart_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 |
---|---|---|
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 |
---|---|---|
Count |
win:UInt32 |
Coleta de lixo número n. |
Depth |
win:UInt32 |
A geração que está sendo coletada. |
Reason |
win:UInt32 |
Motivo do gatilho da coleta de lixo:0x0 ─ Alocação de heap de objeto pequeno.0x1 ─ Induzido.0x2 ─ Memória insuficiente.0x3 ─ Vazio.0x4 ─ Alocação de heap de objeto grande.0x5 ─ Sem espaço (para heap de objeto pequeno).0x6 ─ Sem espaço (para heap de objeto grande).0x7 ─ Induzido, mas não forçado como bloqueio. |
Type |
win:UInt32 |
0x0 ─ O bloqueio de coleta de lixo ocorreu fora da coleta de lixo em segundo plano.0x1 ─ Coleta de lixo em segundo plano.0x2 ─ O bloqueio de coleta de lixo ocorreu durante a coleta de lixo em segundo plano. |
ClrInstanceID |
win:UInt16 | ID exclusiva da instância 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 |
---|---|---|
Count |
win:UInt32 |
Coleta de lixo número n. |
Depth |
win:UInt32 |
A geração que foi coletada. |
ClrInstanceID |
win:UInt16 | ID exclusiva da instância do CoreCLR. |
Evento GCHeapStats_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 | 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 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 |
---|---|---|
Address |
win:UInt64 |
O endereço do segmento. |
Size |
win:UInt64 |
O tamanho do segmento. |
Type |
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 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 |
---|---|---|
Address |
win:UInt64 |
O endereço do segmento. |
ClrInstanceID |
win:UInt16 |
ID exclusiva da instância 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. |
Esse evento não tem nenhum dado de 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. |
Esse evento não tem nenhum dado de evento.
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. |
Esse evento não tem nenhum dado de evento.
Evento GCSuspendEEBegin_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 |
---|---|---|
GCSuspendEEBegin_V1 |
9 | Início da suspensão do mecanismo de execução da coleta de lixo. |
Nome do campo | Tipo de dados | Descrição |
---|---|---|
Count |
win:UInt32 |
Coleta de lixo número n. |
Reason |
win:UInt32 |
Motivo da suspensão do EE.0x0 : suspender para outros0x1 : suspender para a GC.0x2 : suspender para encerramento do AppDomain.0x3 : suspender para lançamento de código.0x4 : suspender para desligamento.0x5 : suspender para o depurador.0x6 : suspender para a preparação para a GC.0x7 : suspender para a varredura do depurador |
Evento GCAllocationTick_V3
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Detalhado (5) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCAllocationTick_V3 |
10 | A cada vez, aproximadamente 100 KB são alocados. |
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 objeto pequeno).0x1 ─ Alocação de objeto grande (a alocação está no heap de objeto grande). |
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. |
Address |
win:Pointer |
O endereço do último objeto alocado. |
ClrInstanceID |
win:UInt16 |
ID exclusiva da instância 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. |
Esse evento não tem nenhum dado de 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. |
Esse evento não tem nenhum dado de evento.
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. |
Esse evento não tem nenhum dado de 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 |
---|---|---|
Count |
win:UInt32 |
O número de finalizadores que foram executados. |
ClrInstanceID |
win:UInt16 | ID exclusiva da instância do CLR ou do CoreCLR. |
Evento SetGCHandle
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCHandleKeyword (0x2) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
SetGCHandle |
30 | Um identificador de GC foi definido. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
HandleID |
win:Pointer |
O endereço do identificador alocado. |
ObjectID |
win:Pointer |
O endereço do objeto cujo identificador foi criado. |
Kind |
win:UInt32 |
O tipo de identificador de GC que foi definido. 0x0 : WeakShort 0x1 : WeakLong 0x2 : Strong 0x3 : Pinned 0x4 : Variable0x5 : RefCounted 0x6 : Dependent0x7 : AsyncPinned0x8 : SizedRef |
Generation |
win:UInt32 |
A geração do objeto cujo identificador foi criado. |
AppDomainID |
win:UInt64 |
A ID do AppDomain. |
ClrInstanceID |
win:UInt16 |
ID exclusiva da instância do CoreCLR. |
Evento DestroyGCHandle
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCHandleKeyword (0x2) |
Informativo (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
DestroyGCHandle |
31 | Um identificador de GC foi destruído. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
HandleID |
win:Pointer |
O endereço do identificador destruído. |
ClrInstanceID |
win:UInt16 | ID exclusiva da instância do CoreCLR. |
Evento PinObjectAtGCTime
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Detalhado (5) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
PinObjectAtGCTime |
33 | Um objeto foi fixado durante uma GC. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
HandleID |
win:Pointer |
O endereço do identificador. |
ObjectID |
win:Pointer |
O endereço do objeto fixado. |
ObjectSize |
win:UInt64 |
O tamanho do objeto fixado. |
TypeName |
win:UnicodeString |
O nome do tipo do objeto fixado. |
ClrInstanceID |
win:UInt16 |
ID exclusiva da instância do CoreCLR. |
Evento GCTriggered
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Detalhado (5) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCTriggered |
35 | Uma GC foi disparada. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
Reason |
win:UInt32 |
O motivo pelo qual uma GC foi disparada.0x0 : AllocSmall0x1 : Induced 0x2 : LowMemory 0x3 : Empty 0x4 : AllocLarge 0x5 : OutOfSpaceSmallObjectHeap 0x6 : OutOfSpaceLargeObjectHeap 0x7 :InducedNoForce 0x8 : Stress 0x9 : InducedLowMemory |
ClrInstanceID |
win:UInt16 |
ID exclusiva da instância do CoreCLR. |
Evento IncreaseMemoryPressure
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informação (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
IncreaseMemoryPressure |
200 | A pressão da memória aumentou. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
ClrInstanceID |
win:UInt16 | ID exclusiva da instância do CoreCLR. |
Evento DecreaseMemoryPressure
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informação (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
DecreaseMemoryPressure |
201 | A pressão da memória foi diminuída. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
BytesFreed |
win:UInt32 |
Bytes liberados. |
ClrInstanceID |
win:UInt16 |
ID exclusiva da instância do CoreCLR. |
Evento GCMarkWithType
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Informação (4) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCMarkWithType |
202 | Uma raiz de GC foi marcada durante a fase de marcação de GC. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
HeapNum |
win:UInt32 |
O número do heap. |
ClrInstanceID |
win:UInt16 | ID exclusiva da instância do CoreCLR. |
Type |
win:UInt32 |
O tipo de raiz da GC.0x0 : Stack0x1 : Finalizer0x2 : Handle0x3 : Older0x4 : SizedRef0x5 : Overflow |
Bytes |
win:UInt64 |
O número de bytes marcados. |
Evento GCJoin_V2
A seguinte tabela mostra a palavra-chave e o nível:
Palavra-chave para acionar o evento | Nível |
---|---|
GCKeyword (0x1) |
Detalhado (5) |
A seguinte tabela mostra as informações do evento:
Evento | ID do evento | Acionado quando |
---|---|---|
GCJoin_V2 |
203 | Um thread de GC ingressado. |
A seguinte tabela mostra os dados do evento:
Nome do campo | Tipo de dados | Descrição |
---|---|---|
Heap |
win:UInt32 |
O número de heap |
JoinTime |
win:UInt32 |
Indica se esse evento é disparado no início ou no final de uma junção (0x0 para o início e 0x1 para o final da junção) |
JoinType |
win:UInt32 |
Tipo de junção. 0x0 : última junção0x1 : junção 0x2 : reinicialização 0x3 : primeira junção reversa0x4 : junção reversa |
ClrInstanceID |
win:UInt16 |
ID exclusiva da instância do CoreCLR. |