次の方法で共有


.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

参照

処理手順

方法 : パフォーマンスの統計情報を生成する

その他の技術情報

.NET Compact Framework でのパフォーマンスと診断