呼び出しツリーは、JProfilerが記録した実際の呼び出しスタックを表示します。呼び出しツリーを解析する際、解釈を容易にするためにいくつかの変換を適用できます。これらの変換は時間がかかる場合があり、呼び出しツリービューの機能と互換性のない出力形式に変更されるため、解析結果ごとに新しいビューが作成されます。
このような解析を実行するには、呼び出しツリービューでノードを選択し、ツールバーまたはコンテキストメニューから呼び出しツリー解析アクションのいずれかを選択します。
呼び出しツリービューの下にネストされたビューが作成されます。同じ解析アクションを再度実行すると、解析結果は置き換えられます。複数の解析結果を同時に保持したい場合は、結果ビューをピン留めできます。その場合、同じ種類の次の解析は新しいビューを作成します。ピン留めされたビューでは、ビューセレクター(左側)に表示される名前を変更できるリネームボタンがビュー上部に表示されます。
ライブセッションでは、結果ビューは呼び出しツリーと一緒に更新されず、解析を実行した時点のデータを表示します。現在のデータで解析を再計算するには、リロードアクションを使用してください。呼び出しツリー自体の再計算が必要な場合(自動更新が無効な割り当てツリーなど)、リロードアクションがそれも処理します。
呼び出しツリースナップショット
「呼び出しツリースナップショットの作成」解析は、現在の呼び出しツリーの静的コピーを作成します。これは、JProfilerスナップショットを保存・開くことなく、異なるユースケースを比較するのに便利です。また、呼び出しツリーの記録中にフリーズしたコピーで作業する方法も提供します。
「呼び出しツリースナップショットの作成」解析は、「CPUビュー」セクションの「呼び出しツリー」ビューでのみ利用できます。呼び出しツリースナップショットビューをピン留めすると、複数の呼び出しツリースナップショットを同時に保持できます。他の解析と異なり、呼び出しツリースナップショットは独立したデータセットとなるため、JProfilerスナップショットに保存されます。
呼び出しツリービューで利用できる呼び出しツリー解析に加えて、呼び出しツリースナップショットには親ビューのホットスポットを計算する「ホットスポットの計算」アクションもあります(「CPUビュー」セクションの「ホットスポット」ビューと同様)。呼び出しツリースナップショットビューの下にネストされたビューからアクセスできるすべての解析は、トップレベルの呼び出しツリービューではなく、親の呼び出しツリースナップショットのデータで動作します。
再帰の折りたたみ
再帰を利用するプログラミングスタイルでは、解析が難しい呼び出しツリーが生成されます。「再帰の折りたたみ」呼び出しツリー解析は、すべての再帰を折りたたんだ呼び出しツリーを計算します。呼び出しツリーで現在選択されているノードの親ノードが、この解析のための呼び出しツリールートとなります。呼び出しツリー全体を解析するには、トップレベルノードのいずれかを選択してください。
同じメソッドが呼び出しスタックの上位で既に呼び出されている場合、再帰と判定されます。その場合、サブツリーは呼び出しツリーから削除され、最初にそのメソッドが呼び出された箇所に再接続されます。そのノードには、再帰回数を示すツールチップ付きのアイコンがプレフィックスとして表示されます。そのノードの下では、異なる深さからのスタックがマージされます。マージされたスタック数もツールチップで表示されます。折りたたまれた再帰の合計数は、元の呼び出しツリーのパラメータ情報の上にあるヘッダーに表示されます。
単純な再帰の場合、マージされたスタック数は再帰回数+1となります。したがって、再帰ツールチップに「1回の再帰」と表示されるノードには、「2個のマージされたスタック」と表示されるノードが含まれます。より複雑な場合は、再帰がネストされて重複したマージ呼び出しツリーが生成されるため、マージされたスタック数はスタックの深さによって異なります。
サブツリーが呼び出しツリーから削除されて上位にマージされる箇所には、特別な 「移動されたノード」 プレースホルダーが挿入されます。
累積アウトゴーイングコールの解析
呼び出しツリーでは、選択したメソッドのアウトゴーイングコールを確認できますが、それはそのメソッドが呼び出された特定の呼び出しスタックに限られます。同じ関心のあるメソッドが異なる呼び出しスタックで呼び出されている場合もあり、すべての呼び出しを累積した呼び出しツリーを解析することで、より良い統計情報を得られることが多いです。「累積アウトゴーイングコールの計算」解析は、選択したメソッドのすべてのアウトゴーイングコールを合計した呼び出しツリーを表示します(呼び出し方法に関係なく)。
選択したメソッドについて、JProfilerは再帰呼び出しを考慮せず、すべてのトップレベル呼び出し元サイトを収集し、結果ツリーで累積します。ヘッダーには、その処理で合計されたトップレベル呼び出し元サイトの数が表示されます。
ビューの上部には、結果ツリーで再帰を折りたたむためのチェックボックスがあります(「再帰の折りたたみ」解析と同様)。再帰が折りたたまれている場合、トップレベルノードと最初のアウトゴーイングコールレベルはメソッド呼び出しグラフと同じ数値を表示します。
バックトレースの計算
「バックトレースの計算」解析は、「累積アウトゴーイングコールの計算」解析を補完します。後者と同様に、選択したメソッドのすべてのトップレベル呼び出しを再帰呼び出しを考慮せずに合計します。ただし、アウトゴーイングコールを表示する代わりに、選択したメソッドの呼び出しに寄与したバックトレースを表示します。呼び出しは最も深いノードから始まり、選択したメソッド(上部)に向かって進みます。
この解析はホットスポットビューに似ていますが、デフォルトでは選択したメソッドの自己時間ではなく合計時間を合計します。また、ホットスポットビューは自己時間が合計時間の大きな割合を占めるメソッドのみを表示します。ビュー上部には合計モードというラジオボタングループがあり、自己時間に設定できます。この選択により、選択したメソッドの合計値はホットスポットビューのデフォルトモードと一致します。
バックトレースでは、バックトレースノード上の呼び出し回数と時間は選択したメソッドにのみ関連します。それらは、その特定の呼び出しスタックが選択したメソッドの値にどれだけ寄与したかを示します。「累積アウトゴーイングコールの計算」解析と同様に、再帰を折りたたむことができ、バックトレースの最初のレベルはメソッド呼び出しグラフのインカミングコールと同等です。
呼び出しグラフでの呼び出しツリー解析
呼び出しグラフでは各メソッドが一意ですが、呼び出しツリーではメソッドが複数の呼び出しスタックに現れることがあります。選択した1つのメソッドについて、「累積アウトゴーイングコールの計算」と「バックトレースの計算」解析は、呼び出しツリーと呼び出しグラフの視点をつなぐ橋渡しとなります。これらは選択したメソッドを中心に、アウトゴーイングコールとインカミングコールをツリーとして表示します。呼び出しグラフを表示アクションを使えば、いつでも完全なグラフに切り替えられます。
逆の視点に切り替えて、グラフからツリービューに変更したい場合もあります。呼び出しグラフで作業している際、グラフ内の任意のノードに対して、同じ呼び出しツリー解析を使って累積アウトゴーイングコールやバックトレースをツリーとして表示できます。
IntelliJ IDEA連携では、エディタのガターに表示される呼び出しグラフに、これらのツリーを直接表示するアクションが含まれています。
割り当てのクラス表示
これまでの呼び出しツリー解析とは少し異なり、割り当て呼び出しツリーおよび割り当てホットスポットビューで利用できる「クラスの表示」解析があります。これは呼び出しツリーを別のツリーに変換するのではなく、すべての割り当て済みクラスを一覧表示するテーブルを表示します。結果ビューは記録済みオブジェクトビューに似ていますが、特定の割り当てスポットに限定されています。
呼び出しツリーを表示する解析結果ビューでは、「累積アウトゴーイングコールの計算」と「選択メソッドへのバックトレースの計算」解析の両方が利用できます。これらを実行すると、独立したパラメータを持つ新しいトップレベル解析が作成されます。前の解析結果ビューで行われた呼び出しツリーの削除は、新しいトップレベル解析には反映されません。
一方で、クラスの表示アクションは、呼び出しツリー解析結果ビューから使用しても新しいトップレベル解析は作成せず、元のビューの2階層下にネストされた解析を作成します。

















