ICorProfilerCallback::ObjectReferences 方法
通知探查器有关指定的对象正在引用的内存中的对象。
语法
HRESULT ObjectReferences(
[in] ObjectID objectId,
[in] ClassID classId,
[in] ULONG cObjectRefs,
[in, size_is(cObjectRefs)] ObjectID objectRefIds[] );
参数
objectId
[in] 正在引用对象的对象 ID。
classId
[in] 指定的对象是其实例的类的 ID。
cObjectRefs
[in] 指定的对象引用的对象数(即 objectRefIds
数组中的元素数)。
objectRefIds
[in] 由 objectId
引用的对象的 ID 数组。
注解
完成垃圾回收后,将为堆中剩余的每个对象调用 ObjectReferences
方法。 如果探查器从此回调返回错误,则分析服务将停止调用此回调,直到下一次垃圾回收。
ObjectReferences
回调可与 ICorProfilerCallback::RootReferences 回调结合使用,以便为运行时创建完整的对象引用关系图。 公共语言运行时 (CLR) 确保每个对象引用只通过 ObjectReferences
方法报告一次。
ObjectReferences
返回的对象 ID 在回调过程中均是无效的,因为垃圾回收可能正处于移动对象的阶段。 因此,探查器不应在 ObjectReferences
调用期间尝试检查对象。 调用 ICorProfilerCallback2::GarbageCollectionFinished 时,垃圾回收已完成,可安全完成检查。
null ClassId
指示 objectId
有一个正在卸载的类型。
要求
平台:请参阅系统要求。
头文件: CorProf.idl、CorProf.h
库:CorGuids.lib
.NET Framework 版本:自 2.0 起可用