.NET Compact Framework のパフォーマンス カウンタ
更新 : 2007 年 11 月
.NET Compact Framework では、PerformanceCounter オブジェクトは、Windows CE および .NET Compact Framework に関連していないため、サポートされていません。ただし、.NET Compact Framework には、定義済みの一連のパフォーマンス カウンタが用意されており、アプリケーションが .NET Compact Framework にどのような負荷をかけているのかを分析できます。カウンタは拡張できません。
アプリケーションに関するパフォーマンスの統計情報を含むファイルをデバイス上に生成できます。操作手順については、「方法 : パフォーマンスの統計情報を生成する」を参照してください。
パフォーマンス カウンタは、アプリケーションのパフォーマンスに対するガベージ コレクションおよび Just-In-Time コンパイルの影響を理解するのに役立ちます。これらの統計情報から、最適化を行う必要がある対象を判断できます。
統計情報ファイルでは、次の列でパフォーマンス カウンタが示されます。
列 |
説明 |
---|---|
Total |
発生回数の合計。 |
Last Datum |
最後の情報。 |
N |
発生回数。 |
Mean |
その他の値の中間値。 |
Min |
最小値。 |
Max |
最大値。 |
.NET Compact Framework のカウンタ
パフォーマンス カウンタは、次のカテゴリに編成されます。
ローダー |
JIT コンパイル |
ジェネリック |
例外 |
ロックおよびスレッド |
相互運用 |
ガベージ コレクション |
ネットワーク |
メモリ |
Windows フォーム |
ローダー カウンタ
次のカウンタは、共通言語ランタイム (CLR: Common Language Runtime) の、アプリケーションから参照されるアセンブリ、クラスなどのコンポーネントを解決して読み込む役割を果たす部分に関係します。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Total Program Run Time (ms) RunTime |
CLR の呼び出しからの経過時間 (ミリ秒)。 |
Calculated |
App Domains Created napplication domains |
アプリケーションのプロセスで作成されたアプリケーション ドメインの数。 |
Simple |
App Domains Unloaded napplication domainsUnloaded |
アプリケーションの実行時にアンロードされたアプリケーション ドメインの数。 |
Simple |
Assemblies Loaded nAssembliesloaded |
アプリケーションのすべてのアプリケーション ドメインにわたって読み込まれたアセンブリの数。 |
Simple |
Classes Loaded nClassesloaded |
アプリケーションの実行時に、すべてのアプリケーション ドメインにわたって読み込まれたクラスの数。 |
Simple |
Methods Loaded nMethodsloaded |
アプリケーションの実行時に、すべてのアプリケーション ドメインにわたって読み込まれたメソッドの総数。 |
Simple |
ジェネリック カウンタ
ジェネリック カウンタは、.NET Compact Framework のジェネリック機能固有のローダー カウンタです。CLR はジェネリックを内部的に使用します。そのため、アプリケーションでジェネリックを明示的に使用しない場合でも、これらのカウンタに値が表示されることがあります。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Closed Types Loaded nInstGenericTypesLoaded |
すべてのアプリケーション ドメインにわたってロードされた固有のジェネリック型の数。 クローズ型は、特定のデータ型に関連付けられているジェネリック クラスです。たとえば、MyGenericType<Int32> のインスタンスはクローズ型です。 |
Simple |
Closed Types Loaded per Definition nMaxClosedTypes |
すべてのアプリケーション ドメインにわたる所定の定義に対して作成された固有のジェネリック型の最大数。 たとえば、アプリケーションで MyGenericType<Int32>、MyGenericType<String>、および MyGenericType<Single> をインスタンス化する場合、MyGenericType<T> 定義に対して読み込まれるクローズ型の数は 3 つです。 Max 列の数値が大きい場合 (数百以上)、JIT コンパイルされたコードと CLR データ構造体に関連するワーキング セットの圧迫を示している可能性があります。 |
StaticOnly |
Open Types Loaded nOpenTypesLoaded |
すべてのアプリケーション ドメインにわたって作成されたオープン ジェネリック型の数。 オープン型は、読み込み済みで、特定のデータ型に関連付けられていないジェネリック クラスです。オープン 型は通常、リフレクションのシナリオでのみ作成されます。 たとえば、リフレクションを使用して MyGenericType<T> のインスタンスを読み込むと、Open Types Loaded カウンタが増加します。MyGenericType<String> のように型が関連付けられている場合はクローズ型になり、Closed Types Loaded カウンタが増加します。.NET Compact Framework CLR はリフレクションを内部的に使用するため、オープン型のソースになることがあります。たとえば、XML シリアル化および Web サービスはリフレクションを内部的に使用します。 |
Simple |
Closed Methods Loaded nInstGenericMethodsLoaded |
すべてのアプリケーション ドメインにわたってロードされた固有のジェネリック メソッド。 クローズ メソッドは、特定のデータ型に関連付けられているジェネリック メソッドです。このメソッドを含む型は、ジェネリック型の場合もジェネリック型でない場合もあります。たとえば、MyType.ProcessData<Int32>() のインスタンスはクローズ メソッドです。 |
Simple |
Closed Methods Loaded per Definition nMaxClosedMethods |
すべてのアプリケーション ドメインにわたる所定の定義に対して作成された固有のジェネリック メソッドの最大数。 このカウンタは、Closed Types Loaded per Definition カウンタと非常によく似ています。MyType.ProcessData<Int32>()、MyType.ProcessData<String>()、および MyType.ProcessData<Single>() の次のインスタンスを使用すると、MyType.ProcessData<T>() 定義に対して 3 つのクローズ メソッドが作成されます。 Closed Types Loaded per Definition カウンタと同じように、Max 列の数値が大きい場合 (数百以上)、JIT コンパイルされたコードと CLR データ構造体に関連するワーキング セットの圧迫を示している可能性があります。 |
StaticOnly |
Open Methods Loaded nOpenMethodsLoaded |
すべてのアプリケーション ドメインにわたって作成された開いているジェネリック メソッドの数。開いているメソッドは通常、リフレクションのシナリオでのみ作成されます。オープン メソッドは、読み込み済みで、特定のデータ型に関連付けられていないジェネリック メソッドです。 .NET Compact Framework ランタイムはリフレクションを内部的に使用するため、オープン メソッドのソースになることがあります。 |
Simple |
ロック カウンタおよびスレッド カウンタ
次のカウンタは、スレッド処理、ロック、タイマ、およびスレッド プールに関係するものです。これらのカウンタは、アプリケーションの実行時のスレッド、タイマ、およびロックの使用に関するデータを提供することにより、スレッド処理に関連するパフォーマンスの問題を示します。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Threads in Thread Pool nThreads |
スレッド プール内の現在のスレッドの数。 このカウンタは、QueueUserWorkItem メソッドを使用して開始されたスレッドをカウントします。このカウンタには、Start メソッドを使用して開始されたスレッドは含まれません。 |
MinMax |
Pending Timers nPendingTimers |
現在キューに置かれているタイマの数。 |
MinMax |
Scheduled Timers nTimersStarted |
現在実行中か、または実行スケジュールが設定されたタイマの数。 |
Simple |
Timers Delayed by Thread Pool Limit nTimersDelayed |
スレッド プールの制限により遅延しているタイマの数。 |
Simple |
Work Items Queued nWorkItemsQueued |
スレッド プールのキューに入れられた作業項目の数。 |
Simple |
Uncontested Monitor.Enter Calls nUncontestedMonitor |
競合しなかった Enter メソッドに対する呼び出しの回数。 |
Simple |
Contested Monitor.Enter Calls nContestedMonitor |
競合した Enter に対する呼び出しの回数。 マルチスレッド化されたアプリケーションで、Thread1 がロックを保持しているときに、ロックで保護されているコードに Thread2 からアクセスする必要がある場合、Contested Monitor.Enter Calls カウンタが増加します。 |
Simple |
ガベージ コレクション カウンタ
次のカウンタは、ガベージ コレクション処理に関係するものです。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Peak Bytes Allocated (native + managed) cbPeakMemUsage |
ネイティブ メモリおよびマネージ メモリの両方について、CLR により使用された最大バイト数。 |
Calculated |
Managed Objects Allocated nObjectsAllocated |
ガベージ コレクタによって割り当てられたオブジェクトの数。 |
Simple |
Unused Managed Objects Allocated nObjectsAllocatedNotUsed |
使用されなかった割り当て済みのオブジェクトの数。 |
Simple |
Managed Bytes Allocated cbAllocated |
ガベージ コレクタによって割り当てられたバイト数。 |
Complex |
Unused Managed Bytes Allocated cbAllocatedNotUsed |
使用されなかった割り当て済みのバイト数。 |
Complex |
Managed String Objects Allocated nStrings |
ガベージ コレクタによって割り当てられたマネージ文字列オブジェクトの数。 |
Simple |
Bytes of String Objects Allocated nStringBytes |
ガベージ コレクタによって割り当てられた文字列オブジェクトのバイト数。 |
Simple |
Garbage Collections (GC) nGC |
ガベージ コレクタが実行した回数。 |
Simple |
Bytes Collected by GC cbGarbage |
ガベージ コレクタによって収集されたバイト数。 |
Complex |
Managed Bytes in Use After GC cbLive |
最後のガベージ コレクション後にライブ オブジェクトに割り当てられたバイト数。 |
MinMax |
Total Bytes in Use After GC cbWorkingSetMem |
最後のガベージ コレクション後に使用されているネイティブ メモリおよびマネージ メモリのバイト数。 |
MinMax |
GC Compactions nCompactions |
ガベージ コレクタがヒープを圧縮した回数。 |
Simple |
Code Pitchings nPitches |
ガベージ コレクタが JIT コンパイル済みコードを破棄した回数。 |
Simple |
Calls to GC.Collect nInduced |
アプリケーションが Collect メソッドを呼び出した回数。 |
Simple |
GC Latency Time (ms) msLatency |
ガベージ コレクタがオブジェクトを収集し、ヒープを圧縮するためにかかった合計時間 (ミリ秒)。 ガベージ コレクタの待機時間には、スコープ内に存在しなくなったマネージ オブジェクトの収集時間および必要に応じて行うガベージ コレクタ ヒープの圧縮時間が含まれます。 |
Complex |
Pinned Objects nPinned |
ガベージ コレクションの実行中に検出されたピン止めオブジェクトの数。 ピン止めオブジェクトは、メモリ内の位置を変更できないオブジェクトです。たとえば、マネージ コードとアンマネージ コードの間の通信に使用されるメモリ バッファがピン止めオブジェクトです。ピン止めオブジェクトは、ヒープの圧縮中にガベージ コレクタで移動できません。 |
Simple |
Objects Moved by Compactor nObjMoved |
圧縮中にガベージ コレクタによって移動したオブジェクトの数。 |
Simple |
Objects Not Moved by Compactor nObjNotMoved |
圧縮中にガベージ コレクタによって移動されなかったオブジェクトの数。 オブジェクトは、さまざまな理由で移動できない場合があります。いくつかは移動できないオブジェクトですが、このようなオブジェクトはごくまれです。他のオブジェクトは、圧縮する必要のないヒープの一部になっているため移動できません。 |
Simple |
Objects Finalized nFinalizersRun |
ファイナライザが実行したオブジェクトの数。 |
Simple |
Boxed Value Types nBoxes |
ボックス化された値型の数。 |
Simple |
メモリ カウンタ
次のカウンタは、ガベージ コレクタによって管理されたメモリ ヒープに関連するものです。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Process Heap HeapDefault |
CLR の既定のヒープによって現在使用されているバイト数。 Process Heap には、CLR によって割り当てられ、この表に示した他のヒープには適合しないメモリが含まれます。 |
MinMax |
Short Term Heap HeapShortTerm |
CLR の有効期間の短いヒープによって現在使用されているバイト数。 Short Term Heap には、一時的な使用のために CLR によって割り当てられたメモリが含まれます。 |
MinMax |
JIT Heap HeapJitCodeBuffer |
JIT コンパイラのヒープによって使用されているバイト数。 JIT Heap には、.NET Compact Framework JIT コンパイラがマネージ メソッドをコンパイルするときに生成されるネイティブ コードが含まれます。JIT コンパイルは、マネージ メソッドを初めて実行するとき、またはコードを破棄した後でメソッドを初めて実行するときに常に実行されます。 |
MinMax |
App Domain Heap HeapAppDomain |
CLR のアプリケーション ドメイン ヒープによって使用されているバイト数。 App Domain Heap には、CLR のアセンブリ ローダーによって使用されるメタデータの動的表現が含まれます。 |
MinMax |
GC Heap HeapGC |
ガベージ コレクタ ヒープによって使用されているバイト数。 GC Heap には、アプリケーションおよび .NET Compact Framework によって割り当てられるメモリが含まれます。 |
MinMax |
JIT コンパイル カウンタ
次のカウンタは、JIT コンパイラの処理に関係するものです。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Native Bytes Jitted cbJittedNative |
JIT コンパイラによって生成されたネイティブ コードのバイト数。 |
Complex |
Methods Jitted nMethodsJitted |
JIT コンパイラによって生成されたメソッドの数。 |
Simple |
Bytes Pitched cbPitched |
JIT コンパイラによって生成された後、破棄されたネイティブ コードのバイト数。 |
Complex |
Methods Pitched nMethodsPitched |
JIT コンパイラによって生成された後、破棄されたメソッドの数。 実行時にアプリケーションがバックグラウンドに移動されなかった場合、Methods Pitched カウンタの値が正のときは、アプリケーションがメモリ圧迫の状態で実行されたことを示します。 |
Simple |
Method Pitch Latency Time (ms) msPitchLatency |
JIT コンパイラによって生成されたメソッドを破棄するためにかかった合計時間 (ミリ秒)。 |
Complex |
例外カウンタ
次のカウンタは例外に関係するものです。
名前および短い名前 |
説明 |
---|---|
Exceptions Thrown nExceptions |
スローされたマネージ例外の数。 例外がスローされるとリソースが大量に消費されるため、アプリケーションによってスローされる例外の数を追跡すると、潜在的な設計上の問題を識別できます。 |
相互運用カウンタ
次のカウンタは、ネイティブ コードの相互運用性に関係するものです。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Platform Invoke Calls nPInvoke |
内部 CLR プラットフォーム呼び出しを除いたマネージ コードからネイティブ コードへのプラットフォーム呼び出しの回数。 |
Simple |
COM Calls Using a vtable nComVTable |
COM 相互運用 vtable メソッドを使用したマネージ コードからネイティブ コードへの呼び出し回数。 |
Simple |
COM Calls Using IDispatch nComIDispatch |
COM 相互運用 IDispatch メソッドを使用したマネージ コードからネイティブ コードへの呼び出し回数。 |
Simple |
Complex Marshaling nMarshal |
マネージ コードからネイティブ コードへのデータのコピーまたは変換を含むマーシャリングされたオブジェクトの数。 |
Simple |
Runtime Callable Wrappers cTotalRcw |
作成された COM ランタイム呼び出し可能ラッパーの総数。 ランタイム呼び出し可能ラッパーは、.NET Compact Framework ランタイム上で実行しているマネージ コードがアンマネージ COM オブジェクトを呼び出すときに作成されます。 |
Simple |
ネットワーク カウンタ
次のカウンタは、ネットワークの送受信処理に関係するものです。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Socket Bytes Sent nBytesSent |
ソケットによって送信された総バイト数。 |
Simple |
Socket Bytes Received nBytesReceived |
ソケットによって受信された総バイト数。 |
Simple |
Windows フォーム カウンタ
次のカウンタは、System.Windows.Forms 名前空間に関係するものです。
名前および短い名前 |
説明 |
カウンタの種類 |
---|---|---|
Controls Created nControlsCreated |
アプリケーションによって作成されたコントロールの総数。 |
Simple |
Brushes Created nBrushesCreated |
アプリケーションによって作成されたブラシ オブジェクトの総数。 |
Simple |
Pens Created nPensCreated |
アプリケーションによって作成されたペン オブジェクトの総数。 |
Simple |
Bitmaps Created nBitmapsCreated |
アプリケーションによって作成されたビットマップ オブジェクトの総数。 |
Simple |
Regions Created nRegionsCreated |
アプリケーションによって作成された領域オブジェクトの総数。 |
Simple |
Fonts Created nFontsCreated |
アプリケーションによって作成されたフォント オブジェクトの総数。 |
Simple |
Graphics Created (FromImage) nGraphicsFromImage |
FromImage メソッドによって作成されたグラフィック オブジェクトの総数。 |
Simple |
Graphics Created (CreateGraphics) nGraphicsCreateGraphics |
CreateGraphics メソッドによって作成されたグラフィック オブジェクトの総数。 |
Simple |