呼び出しツリー
呼び出しツリー はメソッド実行パスを示します。 ツリー内の各メソッドノードは、特定のスレッドによって実行されるトップレベルのメソッドを表します。 メソッドノードには、呼び出されたメソッドとプロファイリング時に収集されたメトリクスがリストされます。
呼び出しツリー を使用して:
アプリケーションアクティビティの簡単な概要を取得する: 最も「高額な」呼び出しを移動するまたは フレームグラフを使用します。
最も遅いメソッド (最も時間がかかるメソッド、または頻繁に呼び出されるメソッド) の実行パスを次の方法で調べます。
ツリーを反転させて、誰がこれらのメソッドを呼び出しているかを確認する
メソッドでフィルターを適用は、関心のあるメソッドのみが実行された時間間隔で他のフィルターを制限します。
徹底的なコールスタック分析を実行するために、 呼び出しツリー は次の機能を提供します。

選択された合計時間に対する呼び出し内に費やされた時間の割合。
短いメソッド名。
呼び出しとそのサブツリー内で費やされた合計時間。 詳細は以下を参照してください。
完全なメソッド名。
呼び出し時間の計算方法
呼び出しツリー がどのように時間を計算するかを理解するために、この例を考えてみましょう。

呼び出しツリー は次のように時間を計算します:

最も高負荷な呼び出しを調べる
アプリケーション内で最も「パフォーマンスに負荷がかかる」メソッドをすべて確認する最も簡単な方法は、 次の重要なコール アクション( Ctrl+Shift+Right )を使用することです。 このアクションは、実行時間が長い次の呼び出しに移動します。 現在のサブツリーにそのような呼び出しが見つからない場合、このアクションは現在選択されているノードの次の兄弟に移動します。
最もパフォーマンスの高い方法を実行するには
呼び出しツリー で方法を選択します。 この方法が出発点になります。
Ctrl+Shift+Right を押すか、コンテキストメニューで 次の重要なコール を選択します。
ステップ 2 を繰り返して、アプリケーションのすべての重要な呼び出しを確認します。
特定のメソッド呼び出しにスコープする
特定の実行パスの分析を簡素化するために、 呼び出しツリー スコープを特定のメソッド呼び出しに限定することができます。
特定のメソッド呼び出しをスコープするには
呼び出しツリー で方法を選択します。
Ctrl+Enter を押すか、コンテキストメニューで これにスコープを設定 を選択します。
特定のメソッド呼び出しを開くと、 呼び出しツリー のルートノードになります。 選択されたノードのサブツリー以外の他のすべての呼び出しは非表示になります。 また、選択したメソッド出現箇所によって自動的にフィルターが適用されます。 このセクションの次のフィルタリングの詳細を参照してください。

たとえば、上記の例で UserMethod2 呼び出し (B としてマーク) にスコープすることにした場合、 呼び出しツリー は次のようになり、次のように時間を計算します。

メソッドが複数の場所から呼び出された場合は、すべてのメソッド呼び出しの発生を 1 ページ内でマージできます。
すべてのメソッド呼び出しの出現箇所をマージして表示するには
呼び出しツリー で方法を選択します。
Ctrl+Shift+Enter を押すか、コンテキストメニューから マージメソッドの出現箇所 項目を選択します。
この後、選択されたメソッドは、すべての出現を含む 呼び出しツリー のルートノードになります。 他のすべての呼び出しは隠されています。 また、メソッドの出現箇所とそのサブツリーによってフィルターが自動的に適用されます。

たとえば、上記の例で、すべての UserMethod2 呼び出しをマージすることにした場合、 呼び出しツリー は次のようになり、時間を次のように計算します。

前の呼び出しツリールートに戻るには、上部の
の戻るボタンをクリックします。
ビューモードのバックトレース
呼び出しツリー がメソッド出現箇所に着目すると、 呼び出しツリー の上部に対応するコントロールを使用して、 呼び出しツリー を バックトレース モードに切り替えることができます。
バックトレース モードでは、下から上に向かって、どの関数が特定の関数を呼び出したかを確認できます。 つまり、 バックトレース は 呼び出しツリー の反転ビューです。

たとえば、上記の例で UserMethod2 呼び出し (B としてマーク) を開くことにした場合、 呼び出しツリー は UserMethod2 によって呼び出されたメソッドを表示します。

呼び出しツリー を バックトレース モードに切り替えると、 UserMethod2 を呼び出して終了した実行パス、つまりツリーの上部が表示されます。

スレッドごとのグループ呼び出し
マルチスレッドアプリケーションの分析を簡素化するには、コールスタックをスレッドごとにグループ化します。 これを行うには、コールツリーで スレッドごとにグループ化 をクリックします。

メソッドを名前で検索
名前でメソッドを検索するには
次のいずれかを実行します。
メインメニューから を選択します。
Ctrl+F を押します。
入力を開始します。 入力すると、検索リストが絞り込まれ、入力した文字列に一致する名前が提案されます。 CamelCase 表記を使用できることに注意してください。 大文字と小文字は区別されないため、「gfnames」と「GFNames」に違いはありません。

リストからクラスまたはメソッドを選択し、 Enter を押します。
見つかったメソッドは、すべての出現の呼び出しサブツリーを含むルートノードになります。 これは、メソッドの出現箇所とそのサブツリーによってフィルターを適用します。
コールトリーで迷子にならない方法
コールツリーを移動する場合、特定のコールにどうやって到達したかが常に問題になります。
現在のコールツリーのフィルタリングパスを表示する モードを有効にすると、ナビゲーションが簡単になります。 このモードでは、すべての遷移が 呼び出しツリー のガターに表示されるため、フォーカスされているノードがツリーのどこにあるかが常に明確になります。

たとえば、上記の例で UserMethod2 呼び出し (G としてマーク) を開くことにした場合、通常は次のように表示されます。

現在のコールツリーのフィルタリングパスを表示する モードを有効にすると、 呼び出しツリー はナビゲーションパス全体も表示します。

これは、マージされたコールインスタンスでも機能します。 たとえば、特定の UserMethod2 インスタンスに焦点を当てるのではなく、マージしたすべてのメソッドインスタンスを開くと、 呼び出しツリー は次のようになります。

ツリーのさまざまな部分が単一の ...(任意のコード)ノードで表されていることに注意してください。
コールツリーがフィルターとして機能する仕組み
特定のメソッド出現箇所またはマージされたメソッドの出現箇所をスコープすると、 呼び出しツリー はメソッド出現箇所によってフィルターとして機能します。
フィルターが適用された後、他のフィルターは、選択されたメソッドの発生(サブツリーを含む)が実行された時間間隔のデータのみを表示します。
フレームグラフとしてのコールツリー
フレームグラフは、 呼び出しツリー のグラフィカルな表現です。 各呼び出しは、関数の独自の時間 + そのすべての子関数の時間に等しい呼び出しの合計時間に依存する長さを持つ水平バーとして表示されます。 コールが長いほど、バーが長くなります。 グラフを開くには、 呼び出しツリー の フレームグラフ をクリックします。 これにより、現在のツリーのグラフが作成されます。
