14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

14
14
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
14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?