Sdílet prostřednictvím


ICorProfilerCallback2::RootReferences2 – metoda

Upozorní profiler na kořenové odkazy po uvolnění paměti. Tato metoda je rozšíření ICorProfilerCallback::RootReferences metoda.

Syntaxe

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
[v] Počet prvků v polích rootRefIds, rootKinds, rootFlagsa rootIds .

rootRefIds
[v] Pole ID objektů, z nichž každé odkazuje na statický objekt nebo objekt v zásobníku. Prvky v rootKinds poli poskytují informace ke klasifikaci odpovídajících prvků v matici rootRefIds .

rootKinds
[v] Pole COR_PRF_GC_ROOT_KIND hodnot, které označují typ kořenového adresáře uvolňování paměti.

rootFlags
[v] Pole COR_PRF_GC_ROOT_FLAGS hodnot, které popisují vlastnosti kořenového adresáře uvolňování paměti.

rootIds
[v] Pole UINT_PTR hodnot, které odkazují na celé číslo, které obsahuje další informace o kořenovém adresáři uvolňování paměti v závislosti na hodnotě parametru rootKinds .

Pokud je typem kořene zásobník, id kořene je pro funkci, která obsahuje proměnnou. Pokud je toto kořenové ID 0, jedná se o nepojmenovanou funkci, která je interní pro CLR. Pokud je typem kořenového adresáře popisovač, id kořene je pro popisovač uvolňování paměti. U ostatních kořenových typů je ID neprůselná hodnota a měla by se ignorovat.

Poznámky

Pole rootRefIds, rootKinds, rootFlagsa rootIds jsou paralelní pole. To znamená , rootRefIds[i]rootKinds[i], rootFlags[i]a rootIds[i] všechny se týkají stejného kořenu.

RootReferences2 Pro upozornění profileru jsou volána obě RootReferences i. Profilátory obvykle implementují jednu nebo druhou metodu, ale ne obě, protože předávané RootReferences2 informace jsou nadmnožinou předaných v RootReferences.

Je možné, že položky v rootRefIds jsou nula, což znamená, že odpovídající kořenový odkaz má hodnotu null a neodkazuje na objekt ve spravované haldě.

ID objektů vrácená nástrojem RootReferences2 nejsou platná během samotného zpětného volání, protože uvolňování paměti může být uprostřed přesunu objektů ze starých adres na nové adresy. Proto by se profilátory neměly pokoušet kontrolovat objekty během RootReferences2 volání. Při volání ICorProfilerCallback2::GarbageCollectionFinished byly všechny objekty přesunuty do svých nových umístění a lze je bezpečně zkontrolovat.

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: CorProf.idl, CorProf.h

Knihovny: CorGuids.lib

Verze rozhraní .NET Framework: K dispozici od verze 2.0

Viz také