LoginSignup
13
13

More than 5 years have passed since last update.

JFR(Java Flight Recorder)でJavaプログラムのプロファイルを取得する

Last updated at Posted at 2016-05-28

Java Flight Recorderを使うことで、JVM、およびJavaアプリケーションのsleep、wait、ロック・コンテンション、I/O、GC、メソッドプロファイルといったイベント情報を収集することができます。Java 7 Update 40以降で標準搭載されています。
JFR.png

詳細は、
https://docs.oracle.com/javase/jp/7/technotes/guides/jfr/toc.html

JFRプロファイルの収集

JFRは商用の機能なので、-XX:+UnlockCommercialFeatures オプションも指定する必要があります。
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

方法1. JAVA_TOOL_OPTIONSの設定

次の例は、60 秒の間にJavaアプリケーションが実行される場合、JFRの記録を開始し、それをmyRecording.jfr という名前のファイルに保存する方法を示しています。

set JAVA_TOOL_OPTIONS "-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=/tmp/myRecording.jfr"

方法2. jcmd診断ツールによる起動

・JFRを有効にする:
jcmd <プロセスID> VM.unlock_commercial_features
・JFRの起動開始:
jcmd <プロセスID> JFR.start duration=<監視時間(秒)> filename=<レコードファイル>

実行例:

$ jcmd 9560 VM.unlock_commercial_features
$ jcmd 9560 JFR.start duration=60s filename=/tmp/myRecording.jfr

方法3. javaコマンドのオプションに指定

次の例は、MyApp アプリケーションを実行し、すぐに 60 秒間の記録を開始し、それをmyRecording.jfr という名前のファイルに保存する方法を示しています。

$ java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=/tmp/myRecording.jfr MyApp

JMC(Java Mission Control)で結果の確認

%JAVA_HOME%\bin\jmc.exeからJMC クライアントを起動し、JFRファイルを開くことで収集した結果をGUI上で確認できます。
2016-05-31_094523.png

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13