Поделиться через


Метод ICorProfilerCallback2::RootReferences2

Уведомляет профилировщик о корневых ссылках после сборки мусора. Этот метод является расширением метода ICorProfilerCallback::RootReferences .

Синтаксис

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

Параметры

cRootRefs
[in] Количество элементов в массивах rootRefIds, rootKinds, rootFlagsи rootIds .

rootRefIds
[in] Массив идентификаторов объектов, каждый из которых ссылается либо на статический объект, либо на объект в стеке. Элементы в массиве rootKinds предоставляют сведения для классификации соответствующих элементов в массиве rootRefIds .

rootKinds
[in] Массив COR_PRF_GC_ROOT_KIND значений, указывающих тип корня сборки мусора.

rootFlags
[in] Массив COR_PRF_GC_ROOT_FLAGS значений , описывающих свойства корня сборки мусора.

rootIds
[in] Массив UINT_PTR значений, указывающих на целое число, содержащее дополнительные сведения о корне сборки мусора в зависимости от значения rootKinds параметра .

Если тип корневого каталога является стеком, идентификатор корня — это функция, содержащая переменную . Если корневой идентификатор равен 0, функция является неименованной функцией, которая является внутренней для среды CLR. Если тип корневого элемента — дескриптор, идентификатор корня — это дескриптор сборки мусора. Для других корневых типов идентификатор является непрозрачным значением, и его следует игнорировать.

Комментарии

Массивы rootRefIds, rootKinds, rootFlagsи rootIds являются параллельными массивами. То есть , rootRefIds[i]rootKinds[i], rootFlags[i]и относятся к одному и rootIds[i] тому же корню.

Для уведомления профилировщика вызываются и RootReferencesRootReferences2 . Профилировщики обычно реализуют один или другой метод, но не оба, так как передаваемые RootReferences2 сведения являются надмножеством , которые передаются в RootReferences.

Записи в могут быть равны нулю, что означает, что соответствующая корневая ссылка имеет значение NULL и не ссылается на объект в rootRefIds управляемой куче.

Идентификаторы объектов, возвращаемые RootReferences2 , недопустимы во время самого обратного вызова, так как сборка мусора может находиться в середине перемещения объектов со старых адресов на новые. В связи с этим профилировщикам не следует пытаться проверять объекты во время вызова RootReferences2. При вызове метода ICorProfilerCallback2::GarbageCollectionFinished все объекты были перемещены в новое расположение и могут быть безопасно проверены.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorProf.idl, CorProf.h

Библиотека: CorGuids.lib

версии платформа .NET Framework: доступно с версии 2.0

См. также раздел