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 rootRefIds
tablicach , rootKinds
, rootFlags
i 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
rootRefIds
Tablice , rootKinds
, rootFlags
i 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 RootReferences
elemecie .
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