プロファイリングセッションの制御
プロファイリングセッションを実行すると、dotMemory は新しい 分析 タブを開き、プロファイリングされたアプリケーションを起動します。

プロファイリングプロセスを制御するには、ページ
の上部にある次のボタンを使用します。
| プロセス スナップショットを取得してもプロファイリングプロセスは中断されないため、別のスナップショットを取得できます (たとえば、後で最初のスナップショットと比較できます)。 スナップショットのキャプチャーが完了したら、 プロファイリング結果の分析 に進むことができます。 |
| コンディションでスナップショットを取得 ウィンドウを開きます。 このウィンドウを使用して、特定の条件がトリガーされたときにスナップショットを自動的に取得するように dotMemory を構成できます。 詳細 |
完全な割り当てデータ | オフ (デフォルト): プロファイラーは、割り当てられたオブジェクトのおおよそのサイズで、メモリ割り当て呼び出しのサンプルデータを収集します。 このモードはアプリケーションのパフォーマンスには影響しません。 サンプルデータの時間間隔は、タイムライングラフ オン: プロファイラーは、割り当てられたオブジェクトの正確なサイズと数を含む、メモリを割り当てる呼び出しに関する詳細なデータを収集します。 このモードでは、プロファイルされたアプリケーションの速度が大幅に低下します。 完全なデータがある時間間隔は、タイムライングラフ |
| アプリケーションで完全なガベージコレクションを強制します。 |
デタッチ | プロファイラーをアプリケーションから切り離しますが、アプリケーションは実行し続けます。 デタッチ 操作は、プロファイラーをすでに実行中のアプリに接続する場合にのみ使用できます。 |
| アプリケーションの現在選択されているプロセスを強制終了します。 強制終了 の使用には注意が必要です。プロセスを無条件で終了させると、アプリが扱うデータが失われる可能性があります。 通常は、プロファイリングされたアプリは通常通り終了させてください。 |
| アプリケーションのすべてのプロセスを強制終了します。 プロセスのリストと すべて終了 ボタンは、複数のプロセスを実行しているアプリをプロファイルする場合にのみ表示されます。 |
マルチプロセスアプリケーションのプロファイリング
スタンドアロンまたは .NET Core アプリケーションが複数のプロセスを実行する場合は、特定のプロセスのメモリスナップショットを作成できます。
特定のプロセスのスナップショットを取得するには
プロセスツリー全体のプロファイリングを可能にする プロセスフィルターを使用してプロファイリングを開始します。 例: 定義済みの プロセスツリー全体 フィルターを選択できます。
プロファイリングセッションが開始されたら、リスト
から目的のプロセスを選択します。スナップショットを取得 をクリックします。
リアルタイムのプロファイリングデータを表示する
タイムライングラフ
は、主に 2 つの目的を果たします。
アプリがリアルタイムでメモリを消費する方法を示します。 タイムラインは、以下を示すいくつかのチャートで構成されています。
非管理メモリ: アンマネージメモリのインスタントサイズ。 このグラフを追加するには、
の 管理されていないメモリを表示する チェックボックスを選択します。ヒープ世代 0,1,2、 ラージオブジェクトヒープ (LOH) :Gen0、Gen1、Gen2 ヒープおよびラージオブジェクトヒープのインスタントサイズ。
GC 以来 LOH に割り当てられた: 最後のガベージコレクション以降にラージオブジェクトヒープに割り当てられたオブジェクトの瞬間サイズ (各 GC の後、グラフはゼロから再開されます)。 このグラフを使用して、LOH 割り当てがいつ発生するか (アプリケーションの起動時、何らかの作業中など) と、その負荷の大きさ (たとえば、アプリには LOH サイズを変更しない大きな LOH メモリトラフィックが発生する場合があります) を把握します。
これにより、 メモリ割り当てを分析するための時間間隔を選択できます。
条件に応じてスナップショットを取得する
特定の条件が発生したときだけスナップショットを取得したい場合もあります。 最も多いケースは、アプリケーションのメモリ消費量が大幅に増加したときにスナップショットを取得することです。 これを手動で行う(スナップショットを取得 ボタンを使用)には手間がかかるため、dotMemory ではこの処理を自動化することができます。 特定の条件を設定するだけで、その条件が満たされるとスナップショットが自動的に収集されます。 現在、以下の条件がサポートされています:
メモリ消費量が MB 単位で増加します。
メモリ消費量は % で増加します。
分単位の期間(スナップショットの定期的な取得)。
スナップショット取得条件をより徹底的に制御するには (たとえば、プログラムの特定の実行ポイントでスナップショットを取得するなど)、 dotMemory API を使用します。
条件に応じてスナップショットの収集を有効にするには
プロファイリングセッションが開始されたら、 プロファイリングコントロールの 条件によるスナップショットの取得 ボタンをクリックします。
スナップショットを自動的に取得 セクションで必要な条件を選択し、それらに特定の値を指定します。
メモリ消費量が増加した場合 [X] MB – メモリ消費量*がベースラインを X MB 超えると、自動的にスナップショットを取得します。 最初のベースラインは、 条件によるスナップショットの取得 ウィンドウで 開始 ボタンをクリックした瞬間のメモリ消費量です。 条件が発生すると、dotMemory はスナップショットを取得し、その瞬間のメモリ消費量が新しいベースラインになります。
メモリ消費量が増加した場合 [X] % – メモリ消費量がベースラインを X パーセント超えると、自動的にスナップショットを取得します。 最初のベースラインは、 条件によるスナップショットの取得 ウィンドウで 開始 ボタンをクリックした瞬間のメモリ消費量です。 条件が発生すると、dotMemory はスナップショットを取得し、その瞬間のメモリ消費量が新しいベースラインになります。
メモリ消費量が超えた場合 [X] MB – 合計メモリ消費量(絶対値)が X MB を超えると、自動的にスナップショットを取得します。
指定間隔: [X] 分 – X 分ごとにスナップショットを自動的に取得します。
dotMemory で最大 X 個のスナップショットを取得したい場合は、 最大スナップショット数制限 を [X] チェックボックスを選択します。 このオプションは、ディスク容量が制限されている場合に便利です。
開始 をクリックします。
条件に応じてスナップショットの収集を無効にするには
プロファイリングコントロールの 条件によるスナップショットの取得 ボタンをクリックします。
停止 をクリックします。