Метод ICorProfilerCallback::ObjectReferences
Уведомляет профилировщик об объектах в памяти, на которые ссылается указанный объект.
Синтаксис
HRESULT ObjectReferences(
[in] ObjectID objectId,
[in] ClassID classId,
[in] ULONG cObjectRefs,
[in, size_is(cObjectRefs)] ObjectID objectRefIds[] );
Параметры
objectId
[in] Идентификатор объекта, ссылающегося на объекты.
classId
[in] Идентификатор класса, экземпляром которому является указанный объект.
cObjectRefs
[in] Количество объектов, на которые ссылается указанный объект (т. е. количество элементов в массиве objectRefIds
).
objectRefIds
[in] Массив идентификаторов объектов, на которые ссылается objectId
.
Комментарии
Метод ObjectReferences
вызывается для каждого объекта, остающегося в куче после завершения сборки мусора. Если профилировщик возвращает ошибку из этого обратного вызова, службы профилирования прекратят вызов этого обратного вызова до следующей сборки мусора.
Обратный ObjectReferences
вызов можно использовать в сочетании с обратным вызовом ICorProfilerCallback::RootReferences для создания полного графа ссылок на объект для среды выполнения. Среда CLR гарантирует, что каждая ссылка на объект передается методом ObjectReferences
только один раз.
Идентификаторы объектов, возвращаемые , ObjectReferences
недопустимы во время самого обратного вызова, так как сборка мусора может находиться в середине движущихся объектов. Поэтому профилировщики не должны пытаться проверять объекты во время ObjectReferences
вызова. При вызове метода ICorProfilerCallback2::GarbageCollectionFinished сборка мусора завершается и проверка может быть выполнена безопасно.
Значение NULL ClassId
указывает, что objectId
имеет тип, который является выгрузкой.
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorProf.idl, CorProf.h
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с версии 2.0