ICorProfilerCallback2::RootReferences2-metod
Meddelar profileraren om rotreferenser efter att en skräpinsamling har inträffat. Den här metoden är ett tillägg till metoden ICorProfilerCallback::RootReferences .
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[]);
Parametrar
cRootRefs
[i] Antalet element i matriserna rootRefIds
, rootKinds
, rootFlags
och rootIds
.
rootRefIds
[i] En matris med objekt-ID:t, som var och en refererar till antingen ett statiskt objekt eller ett objekt i stacken. Element i matrisen rootKinds
ger information för att klassificera motsvarande element i matrisen rootRefIds
.
rootKinds
[i] En matris med COR_PRF_GC_ROOT_KIND värden som anger typen av skräpinsamlingsrot.
rootFlags
[i] En matris med COR_PRF_GC_ROOT_FLAGS värden som beskriver egenskaperna för en skräpinsamlingsrot.
rootIds
[i] En matris med UINT_PTR värden som pekar på ett heltal som innehåller ytterligare information om skräpinsamlingsroten, beroende på parameterns rootKinds
värde.
Om rottypen är en stack är rot-ID:t för funktionen som innehåller variabeln. Om rot-ID:t är 0 är funktionen en namnlös funktion som är intern för CLR. Om rottypen är ett handtag är rot-ID:t för skräpinsamlingshandtaget. För de andra rottyperna är ID:t ett täckande värde och bör ignoreras.
Kommentarer
Matriserna rootRefIds
, rootKinds
, rootFlags
och rootIds
är parallella matriser. Det vill: rootRefIds[i]
, rootKinds[i]
, rootFlags[i]
och rootIds[i]
alla rör samma rot.
Både RootReferences
och RootReferences2
anropas för att meddela profileraren. Profilerare implementerar normalt den ena eller den andra metoden, men inte båda, eftersom informationen som skickas är RootReferences2
en supermängd av den som skickas i RootReferences
.
Det är möjligt att poster i rootRefIds
är noll, vilket innebär att motsvarande rotreferens är null och inte refererar till ett objekt i den hanterade heapen.
Objekt-ID:n som returneras av RootReferences2
är inte giltiga under återanropet, eftersom skräpinsamlingen kan vara mitt i att flytta objekt från gamla adresser till nya adresser. Profilerare bör därför inte försöka inspektera objekt under ett RootReferences2
anrop. När ICorProfilerCallback2::GarbageCollectionFinished anropas har alla objekt flyttats till sina nya platser och kan inspekteras på ett säkert sätt.
Krav
Plattformar: Se Systemkrav.
Huvudet: CorProf.idl, CorProf.h
Bibliotek: CorGuids.lib
.NET Framework versioner: Tillgänglig sedan 2.0