ヘッダーをスキップ
前
 
次

データ・フローの理解

JFRは、JVM (内部APIを使用)およびJavaアプリケーション(JFR APIを使用)からデータを収集します。このデータは、小さいスレッドのローカル・バッファに格納され、グローバルなインメモリー・バッファにフラッシュされます。グローバルなメモリー内バッファにあるデータはディスクに書き込まれます。ディスク書込み操作はコストが高いため、記録を有効にするイベント・データを慎重に選択することで最小化してください。バイナリ記録ファイルの形式は非常にコンパクトであり、アプリケーションによる読取りと書込みに効率的です。

様々なバッファ間で重複する情報はありません。特定のデータ・チャンクはメモリー内またはディスク上のいずれかに格納されます。両方の場所に格納されることはありません。これは次のような意味合いを持ちます:

JVMは、イベント順序を削除してクラッシュしないようにすることがあります。ディスクへの書込みが間に合わなかったデータはすべて破棄されます。この場合、記録ファイルには影響を受けた期間が記録されます。この情報はJVMのロギング・ファシリティにもロギングされます。

ディスクにデータを書き込まないようにJFRを構成できます。このモードでは、グローバル・バッファは循環バッファとして機能し、バッファが一杯になると最も古いデータが削除されます。オーバーヘッドが非常に低いこの動作モードでは、根本原因問題分析に必要なすべての重要データが収集されます。最新データはグローバル・バッファで常に使用可能であるため、操作または監視システムによって問題が検出されるたびにオン・デマンドでディスクに書き込むことができます。ただし、このモードでは、最後の数分のデータのみ使用可能であるため、最新のイベントのみ含まれます。長期間の操作の完全な履歴を取得する必要がある場合は、イベントがディスクに定期的に書き込まれるときにデフォルト・モードを使用します。