Compartir a través de


ICorProfilerCallback2::SurvivingReferences (Método)

Elabora un informe del diseño de los objetos del montón como resultado de una recolección de elementos no utilizados sin comprimir.

HRESULT SurvivingReferences(
    [in] ULONG  cSurvivingObjectIDRanges,
    [in, size_is(cSurvivingObjectIDRanges)] ObjectID
                objectIDRangeStart[] ,
    [in, size_is(cSurvivingObjectIDRanges)] ULONG
                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 comprimir. Es decir, el valor de cSurvivingObjectIDRanges es el tamaño de las matrices objectIDRangeStart y cObjectIDRangeLength, que almacenan un ObjectID y una longitud, respectivamente, de cada bloque de objetos.

    Los dos argumentos siguientes de SurvivingReferences son matrices paralelas. Es decir, objectIDRangeStart y cObjectIDRangeLength se ocupan del mismo bloque de objetos contiguos.

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

  • cObjectIDRangeLength
    [in] Matriz de enteros, cada uno de los cuales tiene el tamaño de un bloque de objetos contiguos supervivientes de la memoria.

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

Comentarios

Los elementos de las matrices objectIDRangeStart y cObjectIDRangeLength se deben interpretar de la siguiente forma para determinar si un objeto sobrevivió a la recolección de elementos no utilizados. Suponga que un valor de ObjectID (ObjectID) está en el siguiente intervalo:

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

Para cualquier valor de i comprendido en el siguiente intervalo, el objeto ha sobrevivido a la recolección de elementos no utilizados:

0 <= i < cSurvivingObjectIDRanges

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

Common Language Runtime (CLR) llama a SurvivingReferences para la recolección de elementos no utilizados sin comprimir. En cambio, para la recolección de elementos comprimidos, se llama a ICorProfilerCallback::MovedReferences. Una sola recolección de elementos no utilizados se puede comprimir para una generación y se puede dejar sin comprimir para otra. Por lo que respecta a una recolección de elementos no utilizados de cualquier generación en concreto, el generador de perfiles recibirá una devolución de llamada de SurvivingReferences o de MovedReferences, pero no de ambas.

Se pueden recibir varias devoluciones de llamada de SurvivingReferences durante una recolección de elementos no utilizados determinada, debido al almacenamiento en búfer interno limitado, a varios informes de subprocesos en el caso de la recolección de elementos no utilizados del servidor y a 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 de las que se informa en cualquier devolución de llamada de SurvivingReferences sobreviven a la recolección de elementos no utilizados.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Referencia

ICorProfilerCallback (Interfaz)

ICorProfilerCallback2 (Interfaz)

Conceptos

Seguimiento de objetos en la API de generación de perfiles