JProfiler ヘルプDownload

コールトレーサー


呼び出しツリーでのメソッドコールの記録は、同じ呼び出しスタックを持つコールを累積します。正確な時系列情報を保持することは通常、メモリ要件が膨大であり、記録されたデータの量が多いため、解釈が非常に困難になるため、実現不可能です。

しかし、限られた状況では、コールをトレースし、完全な時系列を保持することが意味を持ちます。たとえば、複数の協力スレッドのメソッドコールの正確なインターレースを分析したい場合があります。デバッガーはそのようなユースケースをステップスルーすることはできません。あるいは、一連のメソッド呼び出しを分析したいが、デバッガーのように一度だけ見るのではなく、前後に移動できるようにしたい場合もあります。JProfilerはコールトレーサーでこの機能を提供します。

コールトレーサーには、コールトレーサービューでアクティブ化できる別の記録アクションがあり、トリガーまたはプロファイリングAPIで使用できます。過剰なメモリ消費の問題を避けるために、収集されるコールトレースの最大数に上限が設定されています。その上限はビュー設定で構成可能です。収集されるトレースの割合は、フィルター設定に大きく依存します。

コールトレーシングは、メソッドコール記録タイプがインストルメンテーションに設定されている場合にのみ機能します。サンプリングは単一のメソッドコールを追跡しないため、サンプリングでコールトレースを収集することは技術的に不可能です。コンパクトフィルタリングされたクラスへのコールは、呼び出しツリーと同様にコールトレーサーで記録されます。自分のクラスにのみ焦点を当てたい場合は、ビュー設定でこれらのコールを除外できます。

トレースされたメソッドコールは、関連するコールを折りたたむことでスキップしやすくするために、3つのレベルのツリーで表示されます。3つのグループは  スレッド、  パッケージ および  クラスです。これらのグループのいずれかの現在の値が変更されるたびに、新しいグループ化ノードが作成されます。

最下層には  メソッドエントリ および  メソッド終了ノードがあります。コールトレースのテーブルの下には、現在選択されているメソッドトレースのスタックトレースが表示されます。他のメソッドへのコールトレースが現在のメソッドから記録されている場合、または別のスレッドが現在のメソッドを中断する場合、そのメソッドのエントリと終了ノードは隣接しません。前のメソッドおよび次のメソッドアクションを使用して、メソッドレベルでのみナビゲートできます。

トレースおよびすべてのグループ化ノードに表示されるタイミングは、デフォルトで最初のトレースを指しますが、前のノードからの相対時間を表示するように変更できます。前のノードが親ノードである場合、その差はゼロになります。同じタイプの前のノードに対する相対時間を表示するオプションも利用可能です。

適切なフィルターを使用しても、非常に短時間で膨大な数のトレースが収集される可能性があります。興味のないトレースを排除するために、コールトレーサーは表示されるデータを迅速にトリムすることを可能にします。たとえば、特定のスレッドが関連性がないか、特定のパッケージやクラスのトレースが興味深くないかもしれません。また、再帰的なメソッド呼び出しは多くのスペースを占有する可能性があり、それらの単一のメソッドのみを排除したい場合があります。

ノードを選択してdeleteキーを押すことでノードを非表示にできます。選択したノードの他のすべてのインスタンスと関連するすべての子ノードも非表示になります。ビューの上部には、記録されたすべてのトレースのうち、まだ表示されているコールトレースの数が表示されます。非表示のノードを再表示するには、非表示を表示ツールバーボタンをクリックできます。