Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Definiert einen Transportpuffer für detaillierte Heapinformationen zur Garbage Collection.
Note
Diese API wurde ursprünglich für die interne Verwendung in der Runtime entwickelt. Obwohl sie jetzt für die Verwendung durch Dritte unterstützt wird, wird empfohlen, nach Möglichkeit mit den APIs ICorDebug und ICorProfiler zu arbeiten.
Syntax
#define DAC_NUMBERGENERATIONS 4
struct DacpGcHeapDetails : ZeroInit<DacpGcHeapDetails>
{
CLRDATA_ADDRESS heapAddr; // Only filled in in server mode, otherwise NULL
CLRDATA_ADDRESS alloc_allocated;
CLRDATA_ADDRESS mark_array;
CLRDATA_ADDRESS current_c_gc_state;
CLRDATA_ADDRESS next_sweep_obj;
CLRDATA_ADDRESS saved_sweep_ephemeral_seg;
CLRDATA_ADDRESS saved_sweep_ephemeral_start;
CLRDATA_ADDRESS background_saved_lowest_address;
CLRDATA_ADDRESS background_saved_highest_address;
DacpGenerationData generation_table [DAC_NUMBERGENERATIONS];
CLRDATA_ADDRESS ephemeral_heap_segment;
CLRDATA_ADDRESS finalization_fill_pointers [DAC_NUMBERGENERATIONS + 3];
CLRDATA_ADDRESS lowest_address;
CLRDATA_ADDRESS highest_address;
CLRDATA_ADDRESS card_table;
// Use this for workstation mode (DacpGcHeapData.bServerMode==FALSE).
HRESULT Request(ISOSDacInterface *sos)
{
return sos->GetGCHeapStaticData(this);
}
// Use this for Server mode, as there are multiple heaps,
// and you need to pass a heap address in addr.
HRESULT Request(ISOSDacInterface *sos, CLRDATA_ADDRESS addr)
{
return sos->GetGCHeapDetails(addr, this);
}
};
Elemente
| Mitglied | Beschreibung |
|---|---|
heapAddr |
Die Adresse des GC-Heaps. Dieses Element wird nur im Servermodus ausgefüllt. andernfalls ist NULLes . |
alloc_allocated |
Der aktuelle Zuordnungspunkt für den Heap. |
mark_array |
Die Adresse des Markierungsarrays. |
current_c_gc_state |
Die Adresse des aktuellen Komprimierungs-GC-Zustands. |
next_sweep_obj |
Die Adresse des nächsten zu aufräumenden Objekts. |
saved_sweep_ephemeral_seg |
Die Adresse des gespeicherten kurzlebigen Segments für einen Aufräumen. |
saved_sweep_ephemeral_start |
Die Adresse des gespeicherten kurzlebigen Aufräumens. |
background_saved_lowest_address |
Die niedrigste Adresse, die für den Hintergrund-GC-Zustand gespeichert wurde. |
background_saved_highest_address |
Die höchste Adresse, die für den Hintergrund-GC-Zustand gespeichert wurde. |
generation_table |
Ein Array von DacpGenerationData-Strukturen mit Daten für jede GC-Generation. |
ephemeral_heap_segment |
Die Adresse des kurzlebigen Heapsegments. |
finalization_fill_pointers |
Ein Array von Endisierungsfüllzeigern. |
lowest_address |
Die niedrigste Adresse im Heap. |
highest_address |
Die höchste Adresse im Heap. |
card_table |
Die Adresse der GC-Kartentabelle. |
Request |
Füllt die Struktur auf, indem arbeitsstations-GC oder ISOSDacInterface::GetGCHeapDetails server-GC aufgerufen ISOSDacInterface::GetGCHeapStaticData wird. |
Remarks
Diese Struktur befindet sich innerhalb der Laufzeit und wird nicht über Kopfzeilen oder Bibliotheksdateien verfügbar gemacht. Um sie zu verwenden, definieren Sie die Struktur wie oben angegeben.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Kopfball: Nichts
Bibliothek: Nichts
.NET Framework-Versionen: Seit 4.7 verfügbar