Dela via


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, rootFlagsoch 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, rootFlagsoch 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

Se även