次の方法で共有


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 以降で使用可能

関連項目