Javaコール スタック レポート

Javaコール スタック レポートには、測定対象のJavaアプリケーションのサンプルが取得された時点で実行されていたメソッドのコール スタックが表示されます。メソッドは、サンプルを取得したときにJVM内にあるスレッドを調べることによって判別されます。これは、アプリケーションが多くの時間を費やしているメソッドを判別することによって、Javaアプリケーションのパフォーマンス問題の原因を特定するのに役立ちます。 

以下の情報が含まれます。

  • メソッド名:測定中にコール スタックの一部として実行されていたメソッドの名前です。

  • 実行 %:クラスが呼び出しスタックの先頭にあり「実行可能」状態で観測されたオカレンスの割合です。これらのメソッドは測定時にシステム プロセッサー上でアクティブに処理されます。

  • 未実行 %:クラスがスタックの先頭で検出され、他のスレッド状態(待ち、時間に基づく待ち、中断、ブロック、ゾンビ)のいずれかにあったオカレンスの割合です。これらのメソッドは、通常、測定の時点ではプロセスに必要な資源が利用できないために、測定の時点で処理を実行することができないものです。

  • 監視された回数:測定中にコール スタックの先頭でメソッドが監視された回数です。

たとえば、合計10回の監視で2つのメソッド(メソッドAとメソッドB)が観測されたとします。メソッドAは実行4回と未実行1回であり、メソッドBは実行1回と未実行4回でした。これら2つのメソッドで算出される割合(<このメソッドのメソッド実行監視数>÷<すべてのメソッド実行監視数>)は、以下のようになります。

  • メソッドA:実行 40%と未実行 10% = 5/10

  • メソッドB:実行 10%と未実行 40% = 5/10

このシナリオでは、メソッドAを調査することで、より効率的に処理できるよう最適化できるかどうかを判断し、メソッドBを調査することで、どの資源がその処理の完了を妨げているかを判断できます。 

Javaコール スタック レポートを使用するには、以下を行います。

  1. 以下のいずれかの操作を行います。

    • JVM情報ページで、[クラス] グラフのノードをクリックします。

    • をクリックし、[レポート] > [Javaコール スタック] を選択します。

    Javaコール スタック レポートが表示されます。

  1. [JVM内部メソッドを含める] チェック ボックスをオンまたはオフにして、特定のアプリケーションの一部としてではなく、JVMによって実行されるメソッドを含めるか除外します。このチェック ボックスをオンにすると、Javaコール スタック レポートにTopaz for Java Performanceコレクション データも含まれます。デフォルトでは、この情報は除外されます。この設定を変更すると、レポートは自動的に再実行され、更新されます。

  2. 詳細情報を表示するには、以下のいずれかの操作を行います。

    • ノードを展開するには、をクリックするか、またはノードを右クリックして [展開] を選択します。

    • ノードを折りたたむには、をクリックするか、右クリックして [縮小] を選択します。

    • 選択したノードの下にある最初の分岐をすべて展開するには、ノードを右クリックして [階層を表示] を選択します。

    • 選択したノードの下にあるすべてのノードを折りたたむには、右クリックして [すべて縮小] を選択します。

    サブエントリーは、トップ レベルのメソッドを呼び出したメソッドを示します。