ヒープ スナップショットの記録
Windows パフォーマンスレコーダー (WPR) を使用すると、システム上の特定のプロセスのヒープのスナップショットを有効にすることができます。
ヒープのスナップショットビューを取得するため、このヒープスナップショットは ヒープ分析記録とは異なります。 たとえば、ヒープスナップショットは、すべてのヒープ割り当て情報をデータベースに保存します。 SingleSnapshotコマンドを実行すると、割り当て情報がトレースバッファーにエクスポートされます。 スナップショットには、スナップショットを有効にした後に作成されたすべてのスタックを含む割り当て情報が含まれています。
ヒープスナップショットトレースをキャプチャするには
- ヒープスナップショットトレースを有効にする2つの方法でヒープスナップショットトレースを有効にするには、プロセス名とプロセス ID を使用します。
次の例では、プロセス名を使用します:
wpr -snapshotconfig heap -name heaptest.exe //query snapshot config
wpr -snapshotconfig heap -name heaptest.exe enable //enable snapshot config
次の例では、プロセスID かPIDを使用します:
wpr -snapshotconfig heap -pid 8048 enable //enable snapshot config
- Wpr または wprui を使用したトレースの開始
wpr の使用:
wpr -start heapsnapshot -filemode
-Name オプションを使用してヒープスナップショットを有効にした場合は、構成が有効になった後にプロセスを起動する必要があります。
- ヒープスナップショットを取得する
スナップショットがトリガーされるたびに、割り当て履歴データベースがトレースバッファーにエクスポートされます。 1つのスナップショット (複数回使用できます)。次に例を示します:
wpr -singlesnapshot heap <pid for foo.exe>
定期的なスナップショット:
wpr -enableperiodicsnapshot heap <frequency in seconds> <pid for foo.exe>
- wprui または wpr を使用して、トレースを保存します。
wpr -stop heapsnapshot.etl
- ヒープスナップショットを無効にする
PID または名前を使用してヒープを無効にすることができます。 両方の例を次に示します。
使用する名前:
wpr -snapshotconfig heap -name Win32Project1.exe disable
使用するPID:
wpr -snapshotconfig heap -pid %_PID% disable
注: -Name オプションを使用してヒープスナップショットを有効にすると、IFEO レジストリが内部で設定され、プロセスのすべての新しいインスタンスに適用されます。 不要なヒープコレクションを回避するために、テストの完了時に SnapshotConfig オプションを使用して無効にします。 また、プロセスと OS の cpu アーキテクチャが一致しない場合 (たとえば、64ビット OS で win32 アプリを実行している場合) は、name オプション (IFEO) を使用します。