DacpHeapSegmentData (estructura)

Define un búfer de transporte para la información del segmento del montón de recolección de elementos no utilizados.

Note

Esta API se diseñó originalmente para su uso interno en tiempo de ejecución. Aunque ahora es compatible con el uso de terceros, se recomienda trabajar con las API ICorDebug y ICorProfiler siempre que sea posible.

Syntax

struct DacpHeapSegmentData
    : ZeroInit<DacpHeapSegmentData>
{
    CLRDATA_ADDRESS segmentAddr;
    CLRDATA_ADDRESS allocated;
    CLRDATA_ADDRESS committed;
    CLRDATA_ADDRESS reserved;
    CLRDATA_ADDRESS used;
    CLRDATA_ADDRESS mem;
    // pass this to request if non-null to get the next segments.
    CLRDATA_ADDRESS next;
    CLRDATA_ADDRESS gc_heap; // only filled in in server mode, otherwise NULL
    // computed field: if this is the ephemeral segment highMark includes the ephemeral generation
    CLRDATA_ADDRESS highAllocMark;

    size_t flags;
    CLRDATA_ADDRESS background_allocated;

    HRESULT Request(ISOSDacInterface *sos, CLRDATA_ADDRESS addr, const DacpGcHeapDetails& heap)
    {
        HRESULT hr = sos->GetHeapSegmentData(addr, this);

        // if this is the start segment, set highAllocMark too.
        if (SUCCEEDED(hr))
        {
            // TODO:  This needs to be put on the Dac side.
            if (this->segmentAddr == heap.generation_table[0].start_segment)
                highAllocMark = heap.alloc_allocated;
            else
                highAllocMark = allocated;
        }    
        return hr;
    }
};

Members

Miembro Descripción
segmentAddr Dirección del segmento del montón.
allocated Dirección de la parte asignada del segmento.
committed Dirección hasta la que se confirma la memoria para el segmento.
reserved Dirección a la que se reserva memoria para el segmento.
used Dirección hasta la que se usa la memoria para el segmento.
mem Dirección inicial de la memoria del segmento.
next Dirección del siguiente segmento. Pase este valor a Request si no es NULL para recuperar el siguiente segmento.
gc_heap Dirección del montón de GC. Este miembro solo se rellena en modo de servidor; de lo contrario, es NULL.
highAllocMark Marca de asignación alta. Si este segmento es el segmento efímero, este valor incluye la generación efímera.
flags Marcas de segmento del montón.
background_allocated Dirección asignada de GC en segundo plano para el segmento.
Request Rellena la estructura llamando a ISOSDacInterface::GetHeapSegmentData y calcula highAllocMark.

Remarks

Esta estructura reside dentro del tiempo de ejecución y no se expone a través de ningún encabezado o archivo de biblioteca. Para usarlo, defina la estructura como se especificó anteriormente.

Requisitos

Plataformas: Consulte Requisitos del sistema.
Encabezado: Ninguno
Biblioteca: Ninguno
versiones de .NET Framework: disponibles desde la versión 4.7

Consulte también