Compartir a través de


ICorProfilerCallback4::SurvivingReferences2 (Método)

Informa del diseño de objetos del montón como resultado de una recolección de elementos no utilizados sin compactación. Se llama a este método si se implementa la interfaz ICorProfilerCallback4 en el generador de perfiles. La devolución de llamada de este método reemplaza al método ICorProfilerCallback2:: SurvivingReferences porque esta puede usarse para obtener información sobre intervalos más grandes de objetos cuyas longitudes sean demasiado grandes como para expresarse mediante un elemento ULONG.

Sintaxis

HRESULT SurvivingReferences2(  
    [in] ULONG  cSurvivingObjectIDRanges,  
    [in, size_is(cSurvivingObjectIDRanges)] ObjectID  
                objectIDRangeStart[] ,  
    [in, size_is(cSurvivingObjectIDRanges)] SIZE_T  
                cObjectIDRangeLength[] );  

Parámetros

cSurvivingObjectIDRanges
[in] Número de bloques de objetos contiguos que sobrevivieron como resultado de la recolección de elementos no utilizados sin compactación. Es decir, el valor de cSurvivingObjectIDRanges es el tamaño de las matrices objectIDRangeStart y cObjectIDRangeLength, que almacenan un ObjectID y una longitud, respectivamente, para cada bloque de objetos.

Los dos argumentos siguientes de SurvivingReferences2 son matrices paralelas. En otras palabras, objectIDRangeStart y cObjectIDRangeLength hacen referencia al mismo bloque de objetos contiguos.

objectIDRangeStart
[in] Matriz de valores ObjectID, cada uno de los cuales es la dirección inicial de un bloque de objetos activos y contiguos en la memoria.

cObjectIDRangeLength
[in] Matriz de enteros, cada uno de los cuales es el tamaño de un bloque superviviente de objetos contiguos en la memoria.

Se especifica un tamaño para cada bloque al que se hace referencia en la matriz objectIDRangeStart.

Comentarios

Los elementos de las matrices objectIDRangeStart y cObjectIDRangeLength deben interpretarse del siguiente modo para determinar si un objeto ha sobrevivido a la recolección de elementos no utilizados. Supongamos que un valor ObjectID (ObjectID) se encuentra dentro del intervalo siguiente:

ObjectIDRangeStart[i]<= ObjectID<ObjectIDRangeStart[i] + cObjectIDRangeLength[i]

Para cualquier valor i que esté en el intervalo siguiente, el objeto sobrevivió a la recolección de elementos no utilizados:

0 <= i<cSurvivingObjectIDRanges

Una recolección de elementos no utilizados sin compactación recupera la memoria ocupada por objetos "inactivos", pero no compacta ese espacio liberado. Como consecuencia, la memoria se devuelve al montón pero no se mueve ningún objeto "activo".

Common Language Runtime (CLR) llama a SurvivingReferences2 para las recolecciones de elementos no utilizados sin compactación. Para compactar los procesos de recolección de elementos no utilizados, se llama al método MovedReferences2 en lugar de este. Se puede compactar una única recolección de elementos no utilizados para una generación y no compactar para otra. En el caso de los procesos de recolección de elementos no utilizados de cualquier generación, el generador de perfiles recibirá una devolución de llamada del método SurvivingReferences2 o una del método MovedReferences2, pero no ambas.

Se podrían recibir varias devoluciones de llamada SurvivingReferences2 durante una recolección de elementos no utilizados determinada, a causa de un almacenamiento de búfer interno limitado, de varias devoluciones de llamada durante la recolección de elementos no utilizados del servidor o por otras razones. En el caso de varias devoluciones de llamada durante una recolección de elementos no utilizados, la información es acumulativa. Todas las referencias que se notifican en cualquier devolución de llamada SurvivingReferences2 sobreviven a la recolección de elementos no utilizados.

Si se implementan las interfaces ICorProfilerCallback y ICorProfilerCallback4 en el generador de perfiles, se llamará al método SurvivingReferences2 antes que al método SurvivingReferences2, pero esto solo ocurrirá si el método SurvivingReferences2 se devuelve correctamente. Los generadores de perfiles pueden devolver un valor HRESULT que indique un error del método SurvivingReferences2 para evitar llamar al segundo método.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: disponible a partir de la versión 4.5

Consulte también