ICorProfilerCallback2::RootReferences2-Methode
Benachrichtigt den Profiler nach erfolgter Garbage Collection über Stammverweise. Diese Methode ist eine Erweiterung der ICorProfilerCallback::RootReferences-Methode.
Syntax
HRESULT RootReferences2(
[in] ULONG cRootRefs,
[in, size_is(cRootRefs)] ObjectID rootRefIds[],
[in, size_is(cRootRefs)] COR_PRF_GC_ROOT_KIND rootKinds[],
[in, size_is(cRootRefs)] COR_PRF_GC_ROOT_FLAGS rootFlags[],
[in, size_is(cRootRefs)] UINT_PTR rootIds[]);
Parameter
cRootRefs
[in] Die Anzahl von Elementen in den rootRefIds
-, rootKinds
-, rootFlags
- und rootIds
-Arrays.
rootRefIds
[in] Ein Array mit Objekt-IDs, die jeweils entweder auf ein statisches Objekt oder auf ein Objekt im Stapel verweisen. Elemente im rootKinds
-Array liefern Informationen für die Klassifizierung entsprechender Elemente im rootRefIds
-Array.
rootKinds
[in] Ein Array mit COR_PRF_GC_ROOT_KIND-Werten, die den Typ des Garbage Collection-Stamms angeben.
rootFlags
[in] Ein Array mit COR_PRF_GC_ROOT_FLAGS-Werten, die die Eigenschaften eines Garbage Collection-Stamms angeben.
rootIds
[in] Ein Array mit UINT_PTR-Werten, die auf eine ganze Zahl verweisen, die abhängig vom Wert des rootKinds
-Parameters zusätzliche Informationen zum Garbage Collection-Stamm enthält.
Ist der Typ des Stamms ein Stapel, gilt die Stamm-ID für die Funktion, die die Variable enthält. Ist diese Stamm-ID null, handelt es sich bei der Funktion um eine unbenannte CLR-interne Funktion. Ist der Typ des Stamms ein Handle, gilt die Stamm-ID für das Garbage Collection-Handle. Bei den anderen Stammtypen ist die ID ein nicht transparenter Wert und sollte ignoriert werden.
Bemerkungen
Die rootRefIds
-, rootKinds
-, rootFlags
- und rootIds
-Arrays sind parallele Arrays. Das bedeutet: rootRefIds[i]
, rootKinds[i]
, rootFlags[i]
und rootIds[i]
beziehen sich alle auf den gleichen Stamm.
Sowohl RootReferences
als auch RootReferences2
werden aufgerufen, um den Profiler zu benachrichtigen. Profiler implementieren normalerweise eine der Methoden, aber nicht beide, da es sich bei den in RootReferences2
übergebenen Informationen um eine Obermenge der in RootReferences
übergebenen Informationen handelt.
Einträge in rootRefIds
können null sein, was impliziert, dass der entsprechende Stammverweis NULL ist und sich nicht auf ein Objekt auf dem verwalteten Heap bezieht.
Die von RootReferences2
zurückgegebenen Objekt-IDs sind während des eigentlichen Rückrufs nicht gültig, da die Garbage Collection zu diesem Zeitpunkt ggf. noch Objekte von alten Adressen an neue Adressen verschiebt. Deshalb sollten Profiler nicht versuchen, Objekte während eines RootReferences2
-Aufrufs zu überprüfen. Wenn ICorProfilerCallback2::GarbageCollectionFinished aufgerufen wird, wurden alle Objekte an ihre neuen Speicherorte verschoben und können problemlos überprüft werden.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: CorProf.idl, CorProf.h
Bibliothek: CorGuids.lib
.NET Framework-Versionen: Seit 2.0 verfügbar.