Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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