次の方法で共有


ICorProfilerCallback::RootReferences メソッド

更新 : 2007 年 11 月

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

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

パラメータ

  • cRootRefs
    [入力] rootRefIds 配列内の参照の数。

  • rootRefIds
    [入力] 静的オブジェクトまたはスタック上のオブジェクトを参照するオブジェクト ID の配列。

解説

プロファイラへの通知には RootReferencesICorProfilerCallback2::RootReferences2 の両方が呼び出されます。RootReferences2 に渡される情報は RootReferences に渡される情報のスーパーセットであるため、通常、プロファイラはいずれか一方のみを実装します。

rootRefIds 配列には null オブジェクトを含めることができます。たとえば、スタック上に宣言されているすべてのオブジェクト参照がガベージ コレクタによってルートとして処理され、常に通知されます。

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

必要条件

プラットフォーム : 「.NET Framework システム要件」を参照

ヘッダー : CorProf.idl

ライブラリ : CorGuids.lib

.NET Framework のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

参照

参照

ICorProfilerCallback