ICorProfilerCallback::ObjectReferences Method
Notifies the profiler about objects in memory that are being referenced by the specified object.
Syntax
HRESULT ObjectReferences(
[in] ObjectID objectId,
[in] ClassID classId,
[in] ULONG cObjectRefs,
[in, size_is(cObjectRefs)] ObjectID objectRefIds[] );
Parameters
objectId
[in] The ID of the object that is referencing objects.
classId
[in] The ID of the class that the specified object is an instance of.
cObjectRefs
[in] The number of objects referenced by the specified object (that is, the number of elements in the objectRefIds
array).
objectRefIds
[in] An array of IDs of objects that are being referenced by objectId
.
Remarks
The ObjectReferences
method is called for each object remaining in the heap after a garbage collection has completed. If the profiler returns an error from this callback, the profiling services will discontinue invoking this callback until the next garbage collection.
The ObjectReferences
callback can be used in conjunction with the ICorProfilerCallback::RootReferences callback to create a complete object reference graph for the runtime. The common language runtime (CLR) ensures that each object reference is reported only once by the ObjectReferences
method.
The object IDs returned by ObjectReferences
are not valid during the callback itself, because the garbage collection might be in the middle of moving objects. Therefore, profilers must not attempt to inspect objects during an ObjectReferences
call. When ICorProfilerCallback2::GarbageCollectionFinished is called, the garbage collection is complete and inspection can be safely done.
A null ClassId
indicates that objectId
has a type that is unloading.
Requirements
Platforms: See System Requirements.
Header: CorProf.idl, CorProf.h
Library: CorGuids.lib
.NET Framework Versions: Available since 2.0