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
メソッドによって 1 回だけ報告されます。
ObjectReferences
によって返されるオブジェクト ID はコールバック中は無効です。これは、オブジェクトの移動中にガベージ コレクションが発生する可能性があるためです。 このため、ObjectReferences
呼び出しの間にプロファイラーでオブジェクトを検査するべきではありません。 ICorProfilerCallback2::GarbageCollectionFinished が呼び出されると、ガベージ コレクションが完了し、検査を安全に行うことができます。
null の ClassId
は、objectId
がアンロード中の型であることを示します。
必要条件
:「システム要件」を参照してください。
ヘッダー : CorProf.idl、CorProf.h
ライブラリ: CorGuids.lib
.NET Framework のバージョン: 2.0 以降で使用可能
関連項目
.NET