Eventos ETW de recolección de elementos no utilizados
Estos eventos recopilan información sobre la recolección de elementos no utilizados. Ayudan en el diagnóstico y depuración, así como en la determinación de cuántas veces se realizó la recolección de elementos no utilizados, cuánta memoria se liberó durante la recolección de elementos no utilizados, etc.
Esta categoría consta de los siguientes eventos:
- Evento GCStart_V1
- Evento GCEnd_V1
- Evento GCHeapStats_V1
- Evento GCHeapStats_V2
- Evento GCCreateSegment_V1
- Evento GCFreeSegment_V1
- Evento GCRestartEEBegin_V1
- Evento GCRestartEEEnd_V1
- Evento GCSuspendEE_V1
- Evento GCSuspendEE_V1
- Evento GCAllocationTick_V2
- Evento GCAllocationTick_V3
- Evento GCFinalizersBegin_V1
- Evento GCFinalizersEnd_V1
- Evento GCCreateConcurrentThread_V1
- Evento GCCreateConcurrentThread_V1
Evento GCStart_V1
En la tabla siguiente se muestra la palabra clave y el nivel. Para más información, vea Palabras clave y niveles ETW de CLR.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCStart_V1 |
1 | Se ha iniciado una recolección de elementos no utilizados. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
Count | win:UInt32 | Recolección de elementos no utilizados número n. |
Profundidad | win:UInt32 | Generación que se está recopilando. |
Motivo | win:UInt32 | ¿Por qué se desencadenó la recolección de elementos no utilizados: 0x0: asignación del montón de objetos pequeños. 0x1: provocada. 0x2: memoria insuficiente. 0x3: vacía. 0x4: asignación del montón de objetos grandes. 0x5: espacio insuficiente (para montón de objetos pequeños). 0x6: espacio insuficiente (para montón de objetos grandes). 0x7: provocada pero no forzada como bloqueo. 0x8: pruebas de esfuerzo. 0x9: el subproceso de finalizador observó que el proceso está en memoria baja e inducía un GC. 0x10: código de usuario provocó GC y solicitó que fuera un GC de compactación. |
Tipo | win:UInt32 | 0x0: el bloqueo de la recolección de elementos no utilizados se produjo fuera de recolección de elementos no utilizados en segundo plano. 0x1: recolección de elementos no utilizados en segundo plano. 0x2: el bloqueo de la recolección de elementos no utilizados se produjo durante la recolección de elementos no utilizados en segundo plano. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Evento GCEnd_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCEnd_V1 |
2 | La recolección de elementos no utilizados ha finalizado. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
Count | win:UInt32 | Recolección de elementos no utilizados número n. |
Profundidad | win:UInt32 | Generación que se recopiló. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Evento GCHeapStats_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Descripción |
---|---|---|
GCHeapStats_V1 |
4 | Muestra las estadísticas del montón al final de cada recolección de elementos no utilizados. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
GenerationSize0 | win:UInt64 | Tamaño, en bytes, de la memoria de la generación 0. |
TotalPromotedSize0 | win:UInt64 | Número de bytes que se promueven de generación 0 a generación 1. |
GenerationSize1 | win:UInt64 | Tamaño, en bytes, de la memoria de la generación 1. |
TotalPromotedSize1 | win:UInt64 | Número de bytes que se promueven de generación 1 a generación 2. |
GenerationSize2 | win:UInt64 | Tamaño, en bytes, de la memoria de la generación 2. |
TotalPromotedSize2 | win:UInt64 | Número de bytes que sobrevivieron en la generación 2 después de la última recolección. |
GenerationSize3 | win:UInt64 | Tamaño, en bytes, del montón de objetos grandes. |
TotalPromotedSize3 | win:UInt64 | Número de bytes que sobrevivieron en el montón de objetos grandes después de la última recolección. |
FinalizationPromotedSize | win:UInt64 | Tamaño total, en bytes, de los objetos que están listos para la finalización. |
FinalizationPromotedCount | win:UInt64 | Número de objetos que están listos para la finalización. |
PinnedObjectCount | win:UInt32 | Número de objetos anclados (inamovibles). |
SinkBlockCount | win:UInt32 | Número de bloques de sincronización en uso. |
GCHandleCount | win:UInt32 | Número de controles de recolección de elementos no utilizados en uso. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Evento GCHeapStats_V2
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Descripción |
---|---|---|
GCHeapStats_V2 |
4 | Muestra las estadísticas del montón al final de cada recolección de elementos no utilizados. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
GenerationSize0 | win:UInt64 | Tamaño, en bytes, de la memoria de la generación 0. |
TotalPromotedSize0 | win:UInt64 | Número de bytes que se promueven de generación 0 a generación 1. |
GenerationSize1 | win:UInt64 | Tamaño, en bytes, de la memoria de la generación 1. |
TotalPromotedSize1 | win:UInt64 | Número de bytes que se promueven de generación 1 a generación 2. |
GenerationSize2 | win:UInt64 | Tamaño, en bytes, de la memoria de la generación 2. |
TotalPromotedSize2 | win:UInt64 | Número de bytes que sobrevivieron en la generación 2 después de la última recolección. |
GenerationSize3 | win:UInt64 | Tamaño, en bytes, del montón de objetos grandes. |
TotalPromotedSize3 | win:UInt64 | Número de bytes que sobrevivieron en el montón de objetos grandes después de la última recolección. |
FinalizationPromotedSize | win:UInt64 | Tamaño total, en bytes, de los objetos que están listos para la finalización. |
FinalizationPromotedCount | win:UInt64 | Número de objetos que están listos para la finalización. |
PinnedObjectCount | win:UInt32 | Número de objetos anclados (inamovibles). |
SinkBlockCount | win:UInt32 | Número de bloques de sincronización en uso. |
GCHandleCount | win:UInt32 | Número de controles de recolección de elementos no utilizados en uso. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
GenerationSize4 | win:UInt64 | Tamaño, en bytes, del montón de objetos anclados. |
TotalPromotedSize4 | win:UInt64 | Número de bytes que han sobrevivido en el montón de objetos anclados después de la última recolección. |
Evento GCCreateSegment_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCCreateSegment_V1 |
5 | Se ha creado un nuevo segmento de recopilación de elementos no utilizados. Además, si se habilita el seguimiento en un proceso que ya se está ejecutando, se genera este evento para cada segmento existente. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
Dirección | win:UInt64 | Dirección del segmento. |
Size | win:UInt64 | Tamaño del segmento. |
Tipo | win:UInt32 | 0x0: montón de objetos pequeños. 0x1: montón de objetos grandes. 0x2: montón de solo lectura. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Tenga en cuenta que el tamaño de los segmentos asignados por el recolector de elementos no utilizados es específico de la implementación y está sujeto a cambios en cualquier momento, incluso en las actualizaciones periódicas. La aplicación nunca debe realizar suposiciones sobre el tamaño de un sector determinado ni depender de él, y tampoco debe intentar configurar la cantidad de memoria disponible para las asignaciones de segmentos.
Evento GCFreeSegment_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCFreeSegment_V1 |
6 | Se ha liberado un segmento de recolección de elementos no utilizados. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
Dirección | win:UInt64 | Dirección del segmento. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Evento GCRestartEEBegin_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCRestartEEBegin_V1 |
7 | Ha comenzado la reanudación de la suspensión de Common Language Runtime. |
Sin datos del evento.
Evento GCRestartEEEnd_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCRestartEEEnd_V1 |
3 | Ha finalizado la reanudación de la suspensión de Common Language Runtime. |
Sin datos del evento.
Evento GCSuspendEE_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCSuspendEE_V1 |
9 | Inicio de la suspensión del motor de ejecución de la recolección de elementos no utilizados. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
Razón | win:UInt16 | 0x0: otros. 0x1: recolección de elementos no utilizados. 0x2: cierre del dominio de aplicación. 0x3: eliminación de código nativo. 0x4: cierre. 0x5: depurador. 0x6: preparación para la recolección de elementos no utilizados. |
Count | win:UInt32 | El recuento de GC en el momento. Normalmente, verá un evento Inicio de GC posterior después de esto, y su recuento será este recuento + 1 a medida que aumentamos el índice de GC durante una recolección de elementos no utilizados. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Evento GCSuspendEE_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCSuspendEEEnd_V1 |
8 | Final de la suspensión del motor de ejecución de la recolección de elementos no utilizados. |
Sin datos del evento.
Evento GCAllocationTick_V2
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCAllocationTick_V2 |
10 | Cada vez se asignan aproximadamente 100 KB por montón de objetos. Es decir, SOH, LOH y POH acumulan sus bytes asignados por separado. En GC del servidor, esto se hace por montón. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
AllocationAmount | win:UInt32 | Tamaño de la asignación, en bytes. Este valor es preciso para las asignaciones que son menores que la longitud de ULONG (4.294.967.295 bytes). Si la asignación es mayor, este campo contiene un valor truncado. Use AllocationAmount64 para asignaciones muy grandes. |
AllocationKind | win:UInt32 | 0x0: asignación de objetos pequeños (la asignación está en un montón de objetos pequeños). 0x1: asignación de objetos grandes (la asignación está en un montón de objetos grandes). 0x2: asignación de objetos anclados (la asignación está en el montón de objetos anclados). |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
AllocationAmount64 | win:UInt64 | Tamaño de la asignación, en bytes. Este valor es preciso para asignaciones muy grandes. |
TypeId | win:Pointer | Dirección de la MethodTable. Cuando durante este evento se asignaron varios tipos de objetos, esta es la dirección de la MethodTable que corresponde al último objeto asignado (es decir, el objeto que hizo que se supere el umbral de 100 KB). |
TypeName | win:UnicodeString | Nombre del tipo que se asignó. Cuando durante este evento se asignaron varios tipos de objetos, este es el tipo del último objeto asignado (es decir, el objeto que hizo que se supere el umbral de 100 KB). |
HeapIndex | win:UInt32 | Montón al que se ha asignado el objeto. Este valor es 0 (cero) cuando se ejecuta con la recolección de elementos no utilizados de estación de trabajo. |
Evento GCAllocationTick_V3
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCAllocationTick_V2 |
10 | Cada vez se asignan aproximadamente 100 KB por montón de objetos. Es decir, SOH, LOH y POH acumulan sus bytes asignados por separado. En GC del servidor, esto se hace por montón. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
AllocationAmount | win:UInt32 | Tamaño de la asignación, en bytes. Este valor es preciso para las asignaciones que son menores que la longitud de ULONG (4.294.967.295 bytes). Si la asignación es mayor, este campo contiene un valor truncado. Use AllocationAmount64 para asignaciones muy grandes. |
AllocationKind | win:UInt32 | 0x0: asignación de objetos pequeños (la asignación está en un montón de objetos pequeños). 0x1: asignación de objetos grandes (la asignación está en un montón de objetos grandes). 0x2: asignación de objetos anclados (la asignación está en el montón de objetos anclados). |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
AllocationAmount64 | win:UInt64 | Tamaño de la asignación, en bytes. Este valor es preciso para asignaciones muy grandes. |
TypeId | win:Pointer | Dirección de la MethodTable. Cuando durante este evento se asignaron varios tipos de objetos, esta es la dirección de la MethodTable que corresponde al último objeto asignado (es decir, el objeto que hizo que se supere el umbral de 100 KB). |
TypeName | win:UnicodeString | Nombre del tipo que se asignó. Cuando durante este evento se asignaron varios tipos de objetos, este es el tipo del último objeto asignado (es decir, el objeto que hizo que se supere el umbral de 100 KB). |
HeapIndex | win:UInt32 | Montón al que se ha asignado el objeto. Este valor es 0 (cero) cuando se ejecuta con la recolección de elementos no utilizados de estación de trabajo. |
Dirección | win:Pointer | Dirección del último objeto asignado. |
Evento GCFinalizersBegin_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCFinalizersBegin_V1 |
14 | Inicio de los finalizadores en ejecución. |
Sin datos del evento.
Evento GCFinalizersEnd_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCFinalizersEnd_V1 |
13 | Final de los finalizadores en ejecución. |
En la siguiente tabla, se muestran los datos del evento:
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
Count | win:UInt32 | Número de finalizadores que se ejecutó. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Evento GCCreateConcurrentThread_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
ThreadingKeyword (0x10000) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCCreateConcurrentThread_V1 |
11 | El subproceso de recolección de elementos no utilizados simultánea se creó. |
Sin datos del evento.
Evento GCCreateConcurrentThread_V1
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Nivel |
---|---|
GCKeyword (0x1) |
Informativo (4) |
ThreadingKeyword (0x10000) |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Se genera cuando |
---|---|---|
GCTerminateConcurrentThread_V1 |
12 | El subproceso de recolección de elementos no utilizados simultánea finalizó. |
Sin datos del evento.