概要
Java 11が2018年9月26日にリリースされました。
このバージョンからOpenJDKでもFlight Recorderが使えるようになったので使い方を見てみます。
使用方法
事前準備
Flight Recorderで記録したファイルを見るにはmission controlが必要でJDKとは別にインストールしておく必要があります。以下のサイトにインストーラがあります。
https://jdk.java.net/jmc/
(2018/10/18時点ではearly accessです)
プロファイリング記録
プロファイリング記録とはXX秒後からYY秒間記録するといった使い方です。
以下のオプションをjavaコマンド実行時に指定します。
-XX:StartFlightRecording=delay=20s,duration=60s,filename=myRecording.jfr,settings=profile,name=SampleRecording
- delayはjavaコマンド実行してから何秒後に記録を開始するか指定します
- durationは記録を何秒間するかの指定です
- filenameで記録を保存するファイルを指定します(このファイルをmission controlで読むことでプロファイルが見れます)
連続記録
連続して記録を行い必要に応じて最新のX分のプロファイルとか全期間のプロファイルとかをファイルに保存できます。
以下のオプションをjavaコマンド実行時に指定します。
-XX:+FlightRecorder -XX:StartFlightRecording=maxage=5m,settings=default,disk=true
- maxageは最大の保持期間です
実行中のアプリケーションを記録
既に実行しているアプリケーションに対してflight recorderを適用したいケースもあると思います。
その場合はmission controlの画面からフライト記録の開始
を選択することで記録を始めることができます。
プロファイリング記録
、連続記録
のどちらも選択することができます。

mission control
ディスクに保存したjfrファイルを読み込むと以下のようなプロファイル画面が表示されます。
Threadsの画面はスレッドダンプで取れる情報と同等の情報が見れます。
メモリーの画面はヒープダンプで取れる情報と同等の情報が見れます。