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


Метод 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.

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

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

Требования

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

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

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

Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0

См. также

Ссылки

Интерфейс ICorProfilerCallback

Интерфейс ICorProfilerCallback2