Метод 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]
тому же корню.
Для уведомления профилировщика вызываются и RootReferences
RootReferences2
. Профилировщики обычно реализуют один или другой метод, но не оба, так как передаваемые RootReferences2
сведения являются надмножеством , которые передаются в RootReferences
.
Записи в могут быть равны нулю, что означает, что соответствующая корневая ссылка имеет значение NULL и не ссылается на объект в rootRefIds
управляемой куче.
Идентификаторы объектов, возвращаемые RootReferences2
, недопустимы во время самого обратного вызова, так как сборка мусора может находиться в середине перемещения объектов со старых адресов на новые. В связи с этим профилировщикам не следует пытаться проверять объекты во время вызова RootReferences2
. При вызове метода ICorProfilerCallback2::GarbageCollectionFinished все объекты были перемещены в новое расположение и могут быть безопасно проверены.
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorProf.idl, CorProf.h
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с версии 2.0