Share via


メモリ パフォーマンス カウンタ

パフォーマンス コンソール .NET CLR Memory カテゴリには、ガベージ コレクタに関する情報を提供するカウンタが含まれます。これらのパフォーマンス カウンタについて、次の表で説明します。

パフォーマンス カウンタ 説明

# Bytes in all Heaps

Gen 0 Heap SizeGen 1 Heap SizeGen 2 Heap Size、および Large Object Heap Size カウンタの合計値を表示します。このカウンタは、ガベージ コレクション ヒープに割り当てられている現在のメモリをバイト数で示します。

# GC Handles

現在使用中のガベージ コレクション ハンドルの数を表示します。ガベージ コレクション ハンドルは、共通言語ランタイムおよびマネージ環境の外部のリソースへのハンドルです。

# Gen 0 Collections

アプリケーションの開始後に、ジェネレーション 0 のオブジェクト (最後に割り当てられた、最も若いオブジェクト) がガベージ コレクションされた回数を表示します。

ジェネレーション 0 ガベージ コレクションは、割り当て要求を満たすために利用できるジェネレーション 0 のメモリが不足したときに発生します。このカウンタは、ジェネレーション 0 のガベージ コレクションの最後にインクリメントされます。上位のジェネレーションのガベージ コレクションには、それより下位のすべてのジェネレーションのコレクションが含まれます。このカウンタは、上位のジェネレーション (ジェネレーション 1 または 2) ガベージ コレクションが発生したときに明示的にインクリメントされます。

このカウンタは、最後に計測された値を表示します。_Global_ カウンタの値は正確でないので、無視する必要があります。

# Gen 1 Collections

アプリケーションの開始後にジェネレーション 1 のオブジェクトをガベージ コレクションした回数を表示します。

このカウンタは、ジェネレーション 1 のガベージ コレクションの最後にインクリメントされます。上位のジェネレーションのガベージ コレクションには、それより下位のすべてのジェネレーションのコレクションが含まれます。このカウンタは、上位のジェネレーション (ジェネレーション 2) のガベージ コレクションが発生したときに明示的にインクリメントされます。

このカウンタは、最後に計測された値を表示します。_Global_ カウンタの値は正確でないので、無視する必要があります。

# Gen 2 Collections

アプリケーションの開始後にジェネレーション 2 のオブジェクトをガベージ コレクションした回数を表示します。このカウンタは、ジェネレーション 2 ガベージ コレクション (フル ガベージ コレクションとも呼ばれる) の最後にインクリメントされます。

このカウンタは、最後に計測された値を表示します。_Global_ カウンタの値は正確でないので、無視する必要があります。

# Induced GC

明示的な GC.Collect 呼び出しが原因でガベージ コレクションが実行されたピーク回数を表示します。ガベージ コレクタのコレクションの頻度を調整することをお勧めします。

# of Pinned Objects

最後のガベージ コレクションで検出されたピン止めオブジェクトの数を表示します。ピン止めオブジェクトとは、ガベージ コレクタがメモリ内を移動させることのできないオブジェクトです。このカウンタは、ガベージ コレクションされるヒープ内のピン止めオブジェクトだけを追跡します。たとえば、ジェネレーション 0 のガベージ コレクションは、ジェネレーション 0 のヒープ内のピン止めオブジェクトだけを列挙します。

# of Sink Blocks in use

現在使用中の同期ブロックの数を表示します。同期ブロックは、同期情報を格納するためにオブジェクトごとに割り当てられるデータ構造体です。同期ブロックは、マネージ オブジェクトへの弱い参照を保持します。ガベージ コレクタは、同期ブロックをスキャンする必要があります。同期ブロックには、同期情報だけでなく、COM 相互運用メタデータも格納できます。このカウンタは、同期プリミティブの頻繁な使用に関係するパフォーマンス問題を示します。

# Total committed Bytes

ガベージ コレクタによって現在コミットされている仮想メモリの量をバイト数で表示します。コミットされたメモリとは、ディスク ページング ファイル内で領域が予約された物理メモリのことです。

# Total reserved Bytes

ガベージ コレクタによって現在予約済みの仮想メモリの量をバイト数で表示します。予約済みのメモリとは、アプリケーション用に予約された仮想メモリ空間のことですが、ディスクやメイン メモリ ページは使用されません。

% Time in GC

前回のガベージ コレクション サイクルにガベージ コレクションの実行に費やされた経過時間の割合を表示します。このカウンタは、通常、ガベージ コレクタがアプリケーションに代わってメモリをコレクションし、メモリの領域を圧縮するために実行した作業量を示します。このカウンタは、ガベージ コレクションが終了するごとに、更新されます。このカウンタは、平均値ではなく、最後に計測された値を反映します。

Allocated Bytes/Second

1 秒間にガベージ コレクション ヒープに割り当てられたバイト数を表示します。このカウンタは、割り当てが行われるたびに更新されるのではなく、ガベージ コレクションが終了するごとに、更新されます。このカウンタは、全時間を通しての平均値ではなく、最後の 2 回の収集で計測された値の差を収集間隔で割った値が表示されます。

Finalization Survivors

ガベージ コレクションされたオブジェクトのうち、終了待機中のためにコレクションされなかったオブジェクト数を表示します。これらのオブジェクトが他のオブジェクトへの参照を保持している場合は、参照先のオブジェクトもコレクションされず、このカウンタではカウントされません。Promoted Finalization-Memory from Gen 0 カウンタおよび Promoted Finalization-Memory from Gen 1 カウンタは、終了処理のためにコレクションされなかったすべてのメモリを表します。

このカウンタの値は累計値ではありません。カウンタ値は、ガベージ コレクションが終了するごとに、各コレクションでの残存オブジェクト数に更新されます。このカウンタは、アプリケーションが終了処理のために必要とする追加のオーバーヘッドを示します。

Gen 0 heap size

ジェネレーション 0 に割り当てることができる最大バイト数を表示します。ジェネレーション 0 に現在割り当てられているバイト数を示すのではありません。

前回のコレクションの後で行われた割り当てがこのサイズを超えると、ジェネレーション 0 のガベージ コレクションが発生します。ジェネレーション 0 のサイズは、ガベージ コレクタによって調整され、アプリケーションの実行中に変更できます。ジェネレーション 0 コレクションの最後には、ジェネレーション 0 ヒープのサイズは 0 バイトになります。このカウンタは、次のジェネレーション 0 ガベージ コレクションを起動する割り当てのサイズをバイト数で表示します。

このカウンタは、割り当てが行われるたびに更新されるのではなく、ガベージ コレクションが 1 回終了するごとに更新されます。

Gen 0 Promoted Bytes/Sec

ジェネレーション 0 からジェネレーション 1 に昇格される 1 秒あたりのバイト数を表示します。メモリは、ガベージ コレクションされずに残ったときに昇格されます。このカウンタは、1 秒間に作成される、比較的有効期間の長いオブジェクトの数を示します。

このカウンタには、最後の 2 回の収集で計測された値の差を収集間隔で割った値が表示されます。

Gen 1 heap size

ジェネレーション 1 の現在のバイト数を表示します。このカウンタは、ジェネレーション 1 の最大サイズを表示するのではありません。ジェネレーション 1 では、オブジェクトは直接には割り当てられず、前のジェネレーション 0 ガベージ コレクションから昇格されます。このカウンタは、割り当てが行われるたびに更新されるのではなく、ガベージ コレクションが 1 回終了するごとに更新されます。

Gen 1 Promoted Bytes/Sec

1 秒間にジェネレーション 1 からジェネレーション 2 に昇格されるバイト数を表示します。終了待機中という理由だけで昇格されるオブジェクトは、このカウンタには含まれません。

メモリは、ガベージ コレクションされなかったときに昇格されます。ジェネレーション 2 は最も古いジェネレーションであるため、ジェネレーション 2 からは昇格されません。このカウンタは、1 秒間に作成される非常に有効期間の長いオブジェクトを示します。

このカウンタには、最後の 2 回の収集で計測された値の差を収集間隔で割った値が表示されます。

Gen 2 heap size

ジェネレーション 2 の現在のバイト数を表示します。ジェネレーション 2 では、オブジェクトは直接には割り当てられず、前のジェネレーション 1 のガベージ コレクション中にジェネレーション 1 から昇格されます。このカウンタは、割り当てが行われるたびに更新されるのではなく、ガベージ コレクションが 1 回終了するごとに更新されます。

Large Object Heap size

大きいオブジェクトのヒープの現在のサイズをバイト数で表示します。20 KB より大きいオブジェクトは、ガベージ コレクタによって大きいオブジェクトとして扱われ、特殊なヒープに直接割り当てられます。大きいオブジェクトに対しては、ジェネレーション間の昇格は行われません。このカウンタは、割り当てが行われるたびに更新されるのではなく、ガベージ コレクションが 1 回終了するごとに更新されます。

Promoted Finalization-Memory from Gen 0

ジェネレーション 0 からジェネレーション 1 に昇格されるメモリのうち、終了待機中という理由だけで昇格されるメモリのバイト数を表示します。このカウンタは累計値ではありません。最後のガベージ コレクションで計測された値を表示します。

Promoted Finalization-Memory from Gen 1

ジェネレーション 1 からジェネレーション 2 に昇格されるメモリのうち、終了待機中という理由だけで昇格されるメモリのバイト数を表示します。このカウンタは累計値ではありません。最後のガベージ コレクションで計測された値を表示します。このカウンタは、最後のガベージ コレクションがジェネレーション 0 のコレクションである場合だけ、0 にリセットされます。

Promoted Memory from Gen 0

ガベージ コレクションされず、ジェネレーション 0 からジェネレーション 1 に昇格されるメモリのバイト数を表示します。終了待機中という理由だけで昇格されるオブジェクトは、このカウンタには含まれません。このカウンタは累計値ではありません。最後のガベージ コレクションで計測された値を表示します。

Promoted Memory from Gen 1

ガベージ コレクションされず、ジェネレーション 1 からジェネレーション 2 に昇格されるメモリのバイト数を表示します。終了待機中という理由だけで昇格されるオブジェクトは、このカウンタには含まれません。このカウンタは累計値ではありません。最後のガベージ コレクションで計測された値を表示します。このカウンタは、最後のガベージ コレクションがジェネレーション 0 のコレクションである場合だけ、0 にリセットされます。

参照

関連項目

ランタイム プロファイリング

概念

自動メモリ管理

その他の技術情報

.NET Framework のパフォーマンス カウンタ