呼び出しツリー
呼び出しツリー ビューには、選択したオブジェクトセットの作成に関与するスタックトレースが表示されます。 このビューを使用して、「どの関数がオブジェクトを作成したか」を問い、メモリを過剰に割り当てる関数を特定します。
分析を簡素化するために、dotMemory では、コールツリーを つららまたは サンバーストチャートとして視覚化できます。
呼び出しツリー

呼び出しツリーの各ノードは関数呼び出しを表します。 関数名の横の数字は、呼び出しによって割り当てられたオブジェクトのサイズ、またはこれらのオブジェクトの数を示します。 これらのモードを切り替えるには、上部のボタンを使用します。

このアイコンは、関数が サンバーストまたは アイシクルチャートでどのように表示されるかを示します。 アイコンの色は、チャート上の関数の色に対応します。 次のアイコンがあります。
– 現在のチャートのスコープ内のルート関数。
– 関数自体は選択されたセットからオブジェクトを割り当てませんが、そのサブツリー (子関数) は割り当てます。
– 現在のスケールでは重要でない小さなサイズのオブジェクトを割り当てる関数のグループ。アイコンなし – 関数はサンバーストチャートまたはつららチャートに表示されません。
割り当てられたメモリの合計の割合、または関数とそのサブツリーによって割り当てられたオブジェクトの数。
関数の名前。
関数とそのサブツリーによって割り当てられたメモリの合計量 (またはオブジェクトの数)。
関数自体によって割り当てられたメモリの量 (またはオブジェクトの数)。
クラスを含む完全な関数名。
関数の名前空間。
関数、クラス、名前空間を名前で検索する
関数、クラス、名前空間の名前の入力を開始します。 入力した文字列に一致する項目が呼び出しツリーでハイライトされます。

キャメルハンプを使用してください。 例:
foは、System.Drawing.Font型とMS.Utility.FrugalObjectList型のオブジェクトを返します。ワイルドカードなどの 特殊シンボルを使用してください。 完全なリストは以下の表に示されています。
- 特別なシンボルとフィルターの例
シンボル
説明
サンプル例
*ワイルドカード
*
セット内のすべてのオブジェクトsys.*.data
パターンに一致するすべてのタイプと名前空間。 例:System.Data、System.Windows.Controls.Datagrid、System.Windows.Data.Bindingsys.*.data.
パターンに一致する名前空間のみ。 たとえばSystem.Windows.Data.Bindingしかし 含まないSystem.Windows.Controls.Datagrid。配列
[]配列のみを残す
str[]
それらの型または名前空間にstrを含む配列。 例:String[][,[,,...
または[,][,,]...指定されたまたはそれ以上の配列(角括弧が閉じていない場合)
str[,,
型または名前空間にstrを含む次元 3 以上の配列。 例:String[,,]およびString[,,,]str[,,]
型または名前空間にstrを含む 3 次元配列。 例:String[,,]!a結果から配列を除外する
!a str
型または名前空間にstrを含む(配列は除く)オブジェクト。 たとえばStringなくString[]汎用型引数
<ジェネリクス型引数を持つ型だけを残す
str<
その型または名前空間にstrを含み、総称型引数を持つオブジェクトのみ。 たとえばFileStreamStorage<Char>なくList<String><str
その総称型引数にstrを含むオブジェクトのみ。 たとえばList<String>なくFileStreamStorage<Char><,<,,...
または<,><,,>...指定された数のジェネリクス型引数を持つオブジェクトのみを残す
fun<,,>
型または名前空間にfunを含み、3 つのジェネリクス型引数を持つオブジェクト。 例:Func<String, Object, Object>fun<str,,task
型または名前空間にfunを含み、パターンに一致する 3 つの引数または汎用引数を持つオブジェクト。 例:Func<Stream, IAsyncResult, TaskResult, EventArgs>!g検索範囲からジェネリクス型引数を除外する
!g str
その型または名前空間にstrを含むオブジェクト(総称型引数を持たない)。 たとえばStringなくList<String>#c#struct#m#nsタイプ、値タイプ、メソッド、名前空間で検索します。
#ns Feature
名前空間にFeatureを含むオブジェクト。
さらに分析するオブジェクトを選択する
さらに分析するオブジェクトを選択するには、呼び出しツリー内の関数を右クリックし、次のいずれかを選択します。
この関数のインスタンスで割り当てられたオブジェクトを開く – 特定の関数インスタンスによって割り当てられたオブジェクトを選択します (正確な呼び出し)。 または、関数呼び出しで Shift+クリック を使用することもできます(呼び出しツリーとチャートの両方で有効です)。
このサブツリー内のすべての関数によって割り当てられたオブジェクトを開く – 関数サブツリー (関数インスタンスとそのすべての子呼び出し) に割り当てられたオブジェクトを選択します。 または、関数呼び出しで Alt+クリック を使用することもできます(呼び出しツリーとチャートの両方で有効です)。
関数のすべてのインスタンスによって割り当てられたオブジェクトを開く – 関数のすべてのインスタンスに割り当てられたオブジェクトを選択します (関数が異なる呼び出しスタックから呼び出される場合、これらの呼び出しは呼び出しツリーに個別に表示されます)。
その後、対応する分析対象が左パネルの 分析パスに追加されます。
つららチャート

つららチャート では、各関数呼び出しは水平バーとして表示されます。 バーの長さは、呼び出しのサブツリーに割り当てられたオブジェクトのサイズによって異なります。 基になるサブツリーに割り当てられたメモリが多いほど、バーは長くなります。 サブツリーでは、関数呼び出し (バー) のサイズは小さくなるだけなので、サブツリーはつららのように見えます。
特定のコールサブツリーにフォーカスするには、対応するバーをダブルクリックします。 チャートはサブツリーにズームインされ、選択したコールがルートになります。
サンバーストチャート

アイシクルチャートの代わりに、コールツリーをサンバーストチャートとして視覚化することもできます。 サンバーストチャートは、各セグメントが関数呼び出しを表す複数のセグメントに分割された円形チャートです。 セグメントの中央の山括弧が大きいほど、その呼び出し内に割り当てられるメモリが多くなります。 アイシクルチャートと同様に、サンバーストチャートを使用すると、スタック内の主要なメモリジェネレーターをすばやく識別できます。 機能、動作、データ表現の点では、サンバーストチャートはアイシクルチャートと完全に同じです。
サンバーストチャートに切り替えるには、ビューの上部にあるスイッチャーを使用します。
サンバーストチャート を選択すると、コールツリーを 2 つのモードで表示できます。
ツリー – 標準の呼び出しツリービュー。
パス – ルートコールから選択したコールまでのパス上にあるコールの単純なリスト。 パス上にないコールはすべて非表示になります。 このモードは、特定のコールパスに集中する必要がある場合に便利です。