JProfiler ヘルプDownload

JProfiler アーキテクチャ


プロファイルされたアプリケーション、JProfiler UI、およびすべてのコマンドラインユーティリティに関与する重要な相互作用の全体像が以下に示されています。

リモートまたはローカルローカルプロファイルJVM JProfilerMBeanjpcontroller公開するソケット経由で接続しますJMX経由で接続します-agentpathでロードオフラインプロファイリングで制御しますjpenablejpdumpコマンドライン引数jpexportjpcomparejpanalyzeデータを送信します HPROFヒープダンプ 取得 アタッチ経由で ロードされます JProfilerエージェントSnapshotsプロファイリングエージェントロードプロファイリングデータ記録を制御しますコマンドラインツールプロセスコンポーネントデータJProfiler UI

プロファイリングエージェント

"JVM tool interface" (JVMTI) は、プロファイラが情報にアクセスし、自身の計測を挿入するためのフックを追加するために使用するネイティブインターフェースです。これは、プロファイリングエージェントの少なくとも一部がネイティブコードとして実装されなければならないことを意味し、したがって JVM プロファイラはプラットフォームに依存しません。JProfiler は、ここにリストされているさまざまなプラットフォームをサポートしています。

JVM プロファイラは、起動時または後のある時点でロードされるネイティブライブラリとして実装されます。起動時にロードするには、VM パラメータ -agentpath:<ネイティブライブラリへのパス> をコマンドラインに追加します。このパラメータを手動で追加する必要はほとんどありません。なぜなら、JProfiler が IDE 統合、統合ウィザード、または JVM を直接起動する場合などに自動的に追加するからです。しかし、これがプロファイリングを可能にするものであることを知っておくことが重要です。

JVM がネイティブライブラリのロードに成功すると、プロファイリングエージェントが初期化する機会を与えるためにライブラリ内の特別な関数を呼び出します。その後、JProfiler は JProfiler> で始まるいくつかの診断メッセージを出力し、プロファイリングがアクティブであることを確認できます。結論として、-agentpath VM パラメータを渡すと、プロファイリングエージェントは正常にロードされるか、JVM が起動しません。

一度ロードされると、プロファイリングエージェントはスレッドの作成やクラスのロードなど、さまざまなイベントの通知を JVMTI に要求します。これらのイベントの一部は直接プロファイリングデータを提供します。クラスロードイベントを使用して、プロファイリングエージェントはロードされたクラスを計測し、独自のバイトコードを挿入して測定を行います。

JProfiler は、JProfiler UI を使用するか、bin/jpenable コマンドラインツールを使用して、すでに実行中の JVM にエージェントをロードできます。その場合、必要な計測を適用するために、多数のすでにロードされたクラスを再変換する必要があるかもしれません。

データの記録

JProfiler エージェントはプロファイリングデータのみを収集します。JProfiler UI は別途起動され、ソケットを介してプロファイリングエージェントに接続します。リモートサーバーへの安全な接続のために、JProfiler を設定して SSH トンネルを自動的に作成することができます。

JProfiler UI から、エージェントにデータを記録するよう指示し、UI にプロファイリングデータを表示し、スナップショットをディスクに保存することができます。UI の代替として、プロファイリングエージェントはその MBean を通じて制御することができます。この MBean を使用するコマンドラインツールは bin/jpcontroller です。

プロファイリングエージェントを制御するもう一つの方法は、事前定義されたトリガーとアクションのセットを使用することです。この方法では、プロファイリングエージェントは無人モードで動作することができます。これは JProfiler では "オフラインプロファイリング" と呼ばれ、プロファイリングセッションを自動化するのに役立ちます。

スナップショット

JProfiler UI はライブプロファイリングデータを表示できますが、記録されたすべてのプロファイリングデータのスナップショットを保存する必要があることがよくあります。スナップショットは JProfiler UI で手動で保存されるか、トリガーアクションによって自動的に保存されます。

スナップショットは JProfiler UI で開いて比較することができます。自動処理のために、コマンドラインツール bin/jpexport および bin/jpcompare を使用して、以前に保存されたスナップショットからデータを抽出し、HTML レポートを作成することができます。

実行中の JVM からヒープスナップショットを取得する低オーバーヘッドの方法は、bin/jpdump コマンドラインツールを使用することです。これは、JVM の組み込み機能を使用して HPROF スナップショットを保存し、JProfiler で開くことができ、プロファイリングエージェントをロードする必要はありません。