Udostępnij za pośrednictwem


ICorProfilerCallback2::RootReferences2 — Metoda

Powiadamia profilera o odwołaniach do katalogu głównego po wystąpieniu odzyskiwania pamięci. Ta metoda jest rozszerzeniem metody ICorProfilerCallback::RootReferences .

Składnia

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[]);  

Parametry

cRootRefs
[w] Liczba elementów w rootRefIdstablicach , rootKinds, rootFlagsi rootIds .

rootRefIds
[w] Tablica identyfikatorów obiektów, z których każdy odwołuje się do obiektu statycznego lub obiektu na stosie. Elementy w tablicy zawierają informacje o klasyfikowaniu rootKinds odpowiednich elementów w tablicy rootRefIds .

rootKinds
[w] Tablica COR_PRF_GC_ROOT_KIND wartości, które wskazują typ katalogu głównego odzyskiwania pamięci.

rootFlags
[w] Tablica COR_PRF_GC_ROOT_FLAGS wartości opisujących właściwości katalogu głównego odzyskiwania pamięci.

rootIds
[w] Tablica wartości UINT_PTR wskazująca liczbę całkowitą zawierającą dodatkowe informacje o katalogu głównym odzyskiwania pamięci, w zależności od wartości parametru rootKinds .

Jeśli typ katalogu głównego jest stosem, identyfikator główny jest przeznaczony dla funkcji zawierającej zmienną. Jeśli ten identyfikator główny to 0, funkcja jest nienazwaną funkcją wewnętrzną środowiska CLR. Jeśli typ katalogu głównego jest uchwytem, identyfikator główny jest przeznaczony dla uchwytu odzyskiwania pamięci. W przypadku innych typów głównych identyfikator jest nieprzezroczystą wartością i powinien być ignorowany.

Uwagi

rootRefIdsTablice , rootKinds, rootFlagsi rootIds są tablicami równoległymi. Oznacza to, rootRefIds[i], , rootFlags[i]rootKinds[i]i rootIds[i] wszystkie dotyczą tego samego katalogu głównego.

Zarówno, jak RootReferences i RootReferences2 są wywoływane w celu powiadomienia profilera. Profileery zwykle implementują jedną lub drugą metodę, ale nie obie, ponieważ przekazane informacje RootReferences2 są nadzbiorem przekazanym w RootReferenceselemecie .

Istnieje możliwość, że wpisy w rootRefIds stosie mają wartość zero, co oznacza, że odpowiednie odwołanie do katalogu głównego ma wartość null i nie odwołuje się do obiektu na zarządzanym stercie.

Identyfikatory obiektów zwracane przez RootReferences2 obiekt nie są prawidłowe podczas samego wywołania zwrotnego, ponieważ odzyskiwanie pamięci może znajdować się w środku przenoszenia obiektów ze starych adresów do nowych adresów. W związku z tym profilerzy nie powinni próbować sprawdzać obiektów podczas wywołania RootReferences2 . Po wywołaniu wywołania elementu ICorProfilerCallback2::GarbageCollectionFinished wszystkie obiekty zostały przeniesione do nowych lokalizacji i można je bezpiecznie sprawdzić.

Wymagania

Platformy: Zobacz Wymagania systemowe.

Nagłówka: CorProf.idl, CorProf.h

Biblioteki: CorGuids.lib

.NET Framework wersje: dostępne od wersji 2.0

Zobacz też