次の方法で共有


ICorProfilerCallback::RootReferences メソッド

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

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、CorProf.h

ライブラリ: CorGuids.lib

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

参照

参照

ICorProfilerCallback インターフェイス