![]() 前へ |
![]() 次へ |
バッファは、JFRの有効性のために非常に重要です。バッファのサイズによって、ディスク・バッファからのデータの削除方法とタイミングが決定します。データの破棄は、データの存続期間、バッファのサイズまたはその両方が評価された後に行われます。このトピックでは、次の機能について説明します。
バッファ・サイズ設定モードは、JFRの起動時にコマンド・ラインで構成できます。次の2つのモードから選択できます。
期限によるサイズ設定モードでは、JFRによって一定期間データが維持されます。期限が過ぎたデータはディスクから削除されます。
領域によるサイズ設定モードでは、JFRによって最大サイズのバッファが常に維持されます。このため、バッファ内のイベントの最大存続期間は異なる場合があります。
バッファ・モードの設定方法の詳細は、Oracle Technology NetworkのJRockitフライト・レコーダ・ランタイム・ユーザー・ガイドを参照してください。
フライト・レコーダでは、次のいずれかの条件のときにバッファのデータが移動または破棄されます。
領域によるサイズ設定モードの使用中、必要なバッファ・サイズが現在のバッファ・サイズを超えた場合。
期限によるサイズ設定モードの使用中、現在の期間よりもデータが古くなった場合。
インメモリー・バッファのメモリーを使い果たした場合。
バッファ・サイズの設定方法の詳細は、Oracle Technology NetworkのJRockitフライト・レコーダ・ランタイム・ユーザー・ガイドを参照してください。
様々なバッファ間で情報が重複することはありません。特定のデータ・チャンクはメモリー内またはディスク上のいずれかに格納されます。両方に格納されることはありません。これは次のような意味合いを持ちます。
電力障害が発生した場合、ディスク・バッファにフラッシュされていないデータは使用できません。
JVMがクラッシュすると、データがコア・ファイル(インメモリー・バッファ)とディスク・バッファにわかれて格納される場合があります。フライト・レコーダではこのようなバッファをマージできません(高度なクライアント・プログラムまたはツールではマージ可能な場合もありますが、このバージョンではスコープ外です)。
フライト・レコーダに取り込まれたデータがコンシューマで使用可能になるまでにわずかな遅延が発生する場合があります(たとえば、データは別のバッファに移すことで表示可能になるため)。
JFRファイルのデータは複数のスレッド・バッファのチャンクから収集されるため、時系列に並んでいない可能性があります。
極端な例として、Oracle JRockitがJVMの起動を妨げないようにイベントを削除する場合があります。ディスクへの書込みが間に合わなかったデータはすべて破棄されます。この場合、記録ファイルには影響を受けた期間が記録されます。この情報はJRockitのロギング・ファシリティにもロギングされます。