ICorProfilerCallback::RootReferences メソッド

ガベージ コレクション後のルート参照に関する情報をプロファイラーに通知します。

構文

HRESULT RootReferences(  
    [in] ULONG    cRootRefs,  
    [in, size_is(cRootRefs)] ObjectID rootRefIds[] );  

パラメーター

cRootRefs
[in] rootRefIds 配列内の参照の数。

rootRefIds
[in] 静的オブジェクトまたはスタック上のオブジェクトのいずれかを参照するオブジェクト ID の配列。

解説

RootReferencesICorProfilerCallback2::RootReferences2 の両方が呼び出され、プロファイラーに通知されます。 プロファイラーでは通常どちらか一方が実装され、両方ではありません。これは、RootReferences2 で渡される情報は RootReferences で渡されるもののスーパーセットであるためです。

rootRefIds 配列に null オブジェクトが含まれている可能性もあります。 たとえば、スタックで宣言されたすべてのオブジェクト参照は、ガベージ コレクターによってルートとして扱われ、常に報告されます。

RootReferences によって返されるオブジェクト ID はコールバック中は無効です。これは、古いアドレスから新しいアドレスへのオブジェクトの移動中にガベージ コレクションが発生する可能性があるためです。 このため、RootReferences 呼び出しの間にプロファイラーでオブジェクトを検査するべきではありません。 ICorProfilerCallback2::GarbageCollectionFinished が呼び出されると、すべてのオブジェクトが新しい場所に移動され、安全に検査できるようになります。

必要条件

:システム要件」を参照してください。

ヘッダー : CorProf.idl、CorProf.h

ライブラリ: CorGuids.lib

.NET Framework のバージョン: 2.0 以降で使用可能

関連項目