Java Platform, Standard Editionトラブルシューティング・ガイド
目次      

2.3 Javaフライト記録とは

Java Flight Recorder (JFR)は商用機能です。開発者のデスクトップ/ラップトップ上では無償で、また評価目的であればテスト環境、開発環境および本番環境で使用できます。ただし、JFRを本番サーバーで有効にする場合は、商用ライセンスが必要です。それ以外の目的でJMC UIをJDK上で使用する場合、商用ライセンスは必要ありません

JFRの商用機能と入手方法の詳細は、製品マニュアルを参照してください。

JFRの商用ライセンスの詳細は、ライセンス契約を参照してください。

Javaフライト・レコーダは、JavaランタイムおよびJavaランタイムで実行されているJavaアプリケーションの詳細情報を記録します。記録プロセスによるオーバーヘッドはほとんど発生しません。データは、イベントと呼ばれるタイム・スタンプ付きのデータ・ポイントとして記録されます。一般的なイベントには、ロックを待機中のスレッド、ガベージ・コレクション、定期的なCPU使用率データなどがあります。

フライト記録を作成する場合は、保存するイベントを選択します。これは記録テンプレートと呼ばれています。一部のテンプレートは、ごく基本的なイベントのみを保存し、パフォーマンスにほとんど影響を与えません。他のテンプレートは、いくらかのパフォーマンス・オーバーヘッドが発生し、追加情報を得るためにGCをトリガーする場合もあります。通常、オーバーヘッドが数パーセントを超えることはほとんどありません。

フライト記録は、パフォーマンスの問題からメモリー・リーク、重いロック競合まで、広範囲の問題のデバッグに使用できます。

次のトピックでは、Javaフライト記録を作成する記録の種類について説明します。

2.3.1 記録の種類

2種類のフライト記録、連続記録とプロファイリング記録は、次のとおりです。

  • 連続記録: 連続記録は、常時オンの記録で、たとえば、最後の6時間のデータを保存します。アプリケーションで問題が発生した場合は、たとえば、最後の1時間のデータをダンプし、問題発生時に何が起こったかを調べることができます。

    連続記録のデフォルト設定は、非常に低いオーバーヘッドで記録プロファイルを使用することです。このプロファイルは、ヒープの統計や割当てプロファイリングを取得しませんが、役立つデータを大量に収集します。

    連続記録は、常に実行されていることが重要であり、ほとんど発生しない問題をデバッグする際に便利です。記録は、jcmdまたはJMCのいずれかを使用して手動でダンプできます。また、特定の条件が満たされたときにフライト記録をダンプするためにJMCにトリガーを設定することもできます。

  • プロファイリング記録: プロファイリング記録は、オンになると、一定時間実行した後、停止する記録です。通常、プロファイリング記録では、より多くのイベントが有効であり、パフォーマンスへの影響がいくらか大きくなる場合があります。オンにするイベントは、プロファイリング記録の使用に応じて変更できます。

    プロファイリング記録の一般的なユース・ケースは次のとおりです。

    • 最もよく実行されるメソッドおよび最も多くのオブジェクトが作成される場所をプロファイルする。

    • メモリー・リークが発生し、ヒープ使用量が増加しているクラスを探す。

    • 同期に起因するボトルネックの検出および多数のこのようなユース・ケース。

    プロファイリング記録は、特定の問題のトラブルシューティングをしていない場合にも、多くの情報を提供します。プロファイリング記録では、アプリケーションの全体像を見て、ボトルネックまたは改善の必要な領域を見つけることができます。


注:

通常のオーバーヘッドはわずか2%程度であるので、パフォーマンスまたはレイテンシに対して非常に慎重である場合を除き、プロファイリング記録は間違いなく本番環境で実行できます(これはJFRの主要ユース・ケースの1つです)。

目次      

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.