第1章 JDK Flight Recorder の概要
JDK フライトレコーダー (JFR) は、Java アプリケーションを監視およびプロファイリングするためのオーバーヘッドの少ないフレームワークです。詳細は、JEP 328: Flight Recorder を参照してください。
JVM およびアプリケーションコード内のイベントからデータを収集することができます。その後、データはメモリーに書き込まれます。初めに、ディスク上の JFR ファイル (*.jfr) にフラッシュする前に、スレッドローカルバッファーをスレッドローカルバッファーにプロモートし、固定サイズのグローバルリングバッファーにプロモートします。他のアプリケーションはこれらのファイルを分析に使用できます。たとえば、JDK Mission Control (JMC) ツールです。
1.1. JDK Flight Recorder (JFR) コンポーネント
JFR 機能を使用して、JVM 内で実行されるイベントを監視し、これらの監視されたイベントから収集されたデータから記録を作成できます。
次のリストは、主要な JFR 機能の詳細です。
- 記録
- システムの記録を管理できます。各記録には固有の設定があります。録画を開始または停止したり、オンデマンドでディスクに保存したりできます。
- イベント
イベントまたはカスタムイベントを使用して Java アプリケーションのデータとメタデータをトレースし、いずれかのイベントタイプのデータとメタデータを JFR ファイルに保存できます。Java Mission Control (JMC)、
jcmdなどのさまざまなツールを使用して、JFR ファイルに格納されている情報を表示および分析できます。Java Virtual Machine (JVM) には、継続的に追加された既存のイベントが多数含まれています。ユーザーがカスタムイベントをアプリケーションに注入するために API を使用できます。
イベント設定を指定してオーバーヘッドを最小限に抑える場合は、記録時にイベントを有効または無効にできます。これらの設定は
xmlドキュメントの形式を取り、JFR プロファイル (*.jfc) と呼ばれます。OpenJDK には、最も一般的なユースケースでは以下の 2 つのプロファイルがあります。-
default: デフォルト のプロファイルは、実稼働環境で継続的に使用する場合に安全な低オーバーヘッド設定です。通常、オーバーヘッドは 1% 未満です。 -
profile: プロファイルプロファイル は、プロファイリングに適する低オーバーヘッド設定です。通常、オーバーヘッドは 2% 未満です。
-