呼び出しツリーには、情報が多すぎることがよくあります。表示される詳細を減らしたい場合は、いくつかの方法があります。表示データを特定のサブツリーのみに制限する、不要なデータをすべて削除する、あるいはメソッドコールの表示により粒度の粗いフィルターを使用する、といった方法です。これらの戦略はすべてJProfilerでサポートされています。
呼び出しツリーのルートの設定
順次実行される複数のタスクから構成されるユースケースをプロファイルする場合、各サブツリーを個別に分析できます。そのようなサブタスクへのエントリポイントが見つかった後は、周囲の呼び出しツリーは邪魔になるだけであり、サブツリー内の時間の割合も呼び出しツリー全体のルートを基準としているため不便です。
特定のサブツリーに集中するために、JProfilerは呼び出しツリービューおよび割り当て呼び出しツリービューでSet As Rootコンテキストアクションを提供しています。
呼び出しツリーのルートを設定すると、選択したルートに関する情報がビューの上部に表示されます。スクロール可能な1つのラベルにルートに至る直前のいくつかのスタック要素が表示され、Show moreボタンをクリックすると、呼び出しツリーのルートのスタック全体を含む詳細ダイアログを表示できます。
ルート設定アクションを再帰的に使用すると、呼び出しスタックのプレフィックスは単純に連結されます。以前の呼び出しツリーに戻るには、呼び出しツリー履歴のBackボタンを使用してルートの変更を1つずつ元に戻すか、コンテキストメニューのReset Root And Show Allアクションを使用して1ステップで元のツリーに戻ることができます。
呼び出しツリーのルートを変更する上で最も重要な点は、ホットスポットビューにはツリー全体ではなく、選択したルートについてのみ計算されたデータが表示されることです。ホットスポットビューの上部には、表示されているデータのコンテキストを思い出せるよう、呼び出しツリービューと同様に現在の呼び出しツリーのルートが表示されます。
呼び出しツリーの一部の削除
特定のメソッドが存在しない場合に呼び出しツリーがどのように見えるかを確認することが役立つ場合があります。たとえば、開発環境のように迅速にイテレーションできない本番システムからのスナップショットを扱っているため、複数のパフォーマンス問題を一度に修正しなければならない場合がこれに該当します。主要なパフォーマンス問題を解決した後、2番目の問題を分析したい場合、最初の問題がツリーから除外されて初めて明確に把握できるようになります。
呼び出しツリー内のノードは、ノードを選択してDeleteキーを押すか、コンテキストメニューからRemove Selected
Subtreeを選択することで、そのサブツリーごと削除できます。非表示になったノードが存在しなかったかのように、祖先ノードの時間はそれに応じて修正されます。
削除モードには3つあります。Remove all invocationsモードでは、JProfilerは呼び出しツリー全体から選択したメソッドのすべての呼び出しを検索し、それらのサブツリーごとすべて削除します。Remove
subtree onlyオプションは、選択したサブツリーのみを削除します。最後のSet self-time to
zeroは、選択したノードを呼び出しツリーに残しますが、その自己時間をゼロに設定します。これは、プロファイルされていないクラスからの時間を多く含む可能性があるThread.runのようなコンテナノードに役立ちます。
Set As Rootアクションと同様に、削除されたノードはホットスポットビューに影響を与えます。これにより、それらのメソッドが主な要因ではなくなる程度まで最適化された場合に、ホットスポットがどのように見えるかを確認できます。
ノードを削除すると、呼び出しツリービューとホットスポットビューの両方のヘッダー領域に、削除されたノードの数を示す行とRestore Removed Subtreesボタンが表示されます。そのボタンをクリックするとダイアログが表示され、再表示する削除済み要素を選択できます。
呼び出しツリービューのフィルター
ホットスポットビューの表示データに影響を与える呼び出しツリーの3番目の機能は、ビューフィルターです。呼び出しツリーのフィルターを変更すると、計算されたホットスポットに大きな影響を与えます。呼び出しツリービューとのこの相互依存関係を強調するために、ホットスポットビューではビューの上の行に呼び出しツリービューフィルターが表示され、追加フィルターを削除するためのボタンも一緒に表示されます。
呼び出しツリーのルートの設定、呼び出しツリーの一部の削除、およびビューフィルターは併用できますが、ビューフィルターは最後に設定する必要があるという制限があります。呼び出しツリーでビューフィルターが設定されるとすぐに、Set As RootおよびRemove Selected Subtreeアクションは機能しなくなります。
呼び出しグラフとの連携
呼び出しツリービューまたはホットスポットビューのいずれかでShow Graphアクションを呼び出すと、同じ呼び出しツリーのルートに制限され、削除されたメソッドを含まず、設定された呼び出しツリービューフィルターを使用するグラフが表示されます。グラフの上部には、これらの変更に関する情報が呼び出しツリーと同様の形式で表示されます。
グラフビュー自体で新しいグラフを作成する場合、ウィザード内のチェックボックスを使用して、呼び出しグラフの計算に考慮する呼び出しツリー調整機能を選択できます。各チェックボックスは、対応する機能が呼び出しツリービューで現在使用されている場合にのみ表示されます。



















