Hello world! コンテンツ・メディア第1事業部のjyukutyoこと阪田です。
突然ですが、みなさんはJava Flight RecorderとJava Mission Controlをご存知でしょうか?
Java Flight Recorder
「Java Flight Recorderは、Oracle JDKに組み込まれているプロファイリングとイベント収集フレームワークです。Javaの管理者および開発者は、Java Virtual Machine (JVM) とJavaアプリケーションがどのように動作しているかについての詳細な低レベル情報を収集することができます。」
http://www.oracle.com/technetwork/jp/java/javaseproducts/mission-control/index.html
Java Flight Recorder(JFR)はアプリケーションとJVMの詳細な情報をファイルに出力することができます。
Java Mission Control
「Java Mission Controlは、Java Flight Recorderによって収集されたデータを効率的かつ広範囲に詳細な分析を可能にする高度なツール・セットです。ツール・チェーンは、開発者や管理者が、ローカルで実行している、あるいは本番環境でデプロイされているJavaアプリケーションからデータを収集し分析することを可能にします。」
Java Mission Control(JMC)は直接アプリケーションに接続して情報を収集することもできますが、JFRのファイルから分析することができます。
注意事項
JFRとJMCはともに商用機能です。使用するためにはOracle Java SE Advancedのライセンスが必要となります。ただし、Java SEのBCL(Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX)に定義されている開発用途での利用の場合は無料です。
BCLはこちらです。
http://www.oracle.com/technetwork/java/javase/terms/license/index.html
基本的には、本番環境で使用する場合は必ずライセンスがいるということです。
JMCの起動
JMCはOracle JDK 7 Update 40 (7u40)以降バンドルされています。$JAVA_HOME/bin
ディレクトリにjmcコマンド(jmc.exe)があるので実行します。次のような画面が表示されます。今回のJMCのバージョンは5.5
です。
起動したけどどうしよう?
さてJMCを起動しましたが、JFRのファイルがないため、何も見るものがありません。ですが、JDKのDemos and SamplesにJFRのファイルが含まれています。今回はそれを使います。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
このページからJDKのダウンロードに進み、ページの下部に「Java SE Development Kit xxx Demos and Samples Downloads」という項目があります。ここからダウンロードしてください。そして解凍します。
JFRのファイルを開いてみる
解凍したディレクトリのsample/missioncontrol/flightrecordings
ディレクトリに、拡張子がjfr
のファイルがあります。このファイルをJMCで開きます。wldf.jfr
を開いてみます。ロードに少し時間がかかります。それから次のような画面になります。
本当にさまざまな情報を見ることができます。ヒープ、CPU使用状況、スレッド数といった一般的な情報からJITコンパイルの状況、ホット・メソッド、ロック・インスタンスなどの細かい情報が見れます。
サマリー
JFRとJMCは本当に強力なツールです。もしライセンスを持っているなら、すぐにJFRでファイルを出力してデータを収集されるとよいと思います。持っていなくても、こうしてサンプルで試してみることができます。ぜひ一度JFRとJMCを触ってみてください!