原文はこちら。
https://blogs.oracle.com/jtc/entry/using_java_fligt_recorder_with
大きな兄さんであるJava SEと同じように、Java SE Embedded 8プラットフォームはJava Flight Recorderという、プロファイリングおよびイベント収集のためのすばらしいフレームワークがJava Runtime Environmentに組み込まれています。
現時点では、より小さなCompact1、Compact2 profileでは以下に示す変更をしない限り、Java Flight Recorderをサポートすることができません。従って、ここでは標準でサポートしてもらうことの議論は避けましょう。注目すべきは、Compact3です。Compact3 Profileの仕様には中でもjavax.management APIを含んでおり、より合理的な相手であるからです。
1. あなたが使っているプラットフォームに対応したJava SE-Embedded EJREをダウンロードします。
この例では、Linuxホストで実施するので、ARMv6/v7 Hard Floatオプションを選択します(古いRaspberry Pi向けです)。
2. the EJREを展開します。
https://blogs.oracle.com/jtc/entry/using_java_fligt_recorder_with
大きな兄さんであるJava SEと同じように、Java SE Embedded 8プラットフォームはJava Flight Recorderという、プロファイリングおよびイベント収集のためのすばらしいフレームワークがJava Runtime Environmentに組み込まれています。
Java SEしかしながら、Flight RecorderはJava SE Embedded 8 Full JREでのみ利用可能で、より小さなCompact Profileでは利用できません。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java SE Embedded
http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html
Java Flight Recorder
http://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-1998576.html
Java SE Embedded 8 Compact Profiles Overviewそんなわけで、「Compact ProfileでJava Flight Recorderを使うためにはどうすればいいの?」という質問が出てきます。
http://www.oracle.com/technetwork/java/embedded/resources/tech/compact-profiles-overview-2157132.html
現時点では、より小さなCompact1、Compact2 profileでは以下に示す変更をしない限り、Java Flight Recorderをサポートすることができません。従って、ここでは標準でサポートしてもらうことの議論は避けましょう。注目すべきは、Compact3です。Compact3 Profileの仕様には中でもjavax.management APIを含んでおり、より合理的な相手であるからです。
JEP 161: Compact Profiles結局のところ、Compact3 ProfileでFlight Recorderを有効にするためには、いくつかのファイルをFull JREからコピーする必要があります。Flight Recorderが使えるインスタンスを作成する際の支援となる手順をご紹介します。
http://openjdk.java.net/jeps/161
1. あなたが使っているプラットフォームに対応したJava SE-Embedded EJREをダウンロードします。
Oracle Java SE Embedded Downloads
http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html
この例では、Linuxホストで実施するので、ARMv6/v7 Hard Floatオプションを選択します(古いRaspberry Pi向けです)。
2. the EJREを展開します。
3. EJREのjrecreate.shスクリプトを使ってFull JREを作成します。$ tar xvf ejdk-8u51-linux-armv6-vfp-hflt.tar.gz
4. Compact3 JREを作成します。$ ./ejdk1.8.0_51/bin/jrecreate.sh --dest full_jre -g -k
Building JRE using Options {
ejdk-home: /home/pi/ejdk1.8.0_51
dest: /home/pi/full_jre
target: linux_armv6_vfp_hflt
vm: all
runtime: jre
debug: true
keep-debug-info: true
no-compression: false
dry-run: false
verbose: false
extension: []
}
Target JRE Size is 59,389 KB (on disk usage may be greater).
Embedded JRE created successfully
5. Compact3 JREのサイズを確認します。このサイズを使い、Flight Recorderのサポートを追加するために必要な領域を確認します。$ ./ejdk1.8.0_51/bin/jrecreate.sh --profile compact3 --dest compact3 -g -k
Building JRE using Options {
ejdk-home: /home/pi/ejdk1.8.0_51
dest: /home/pi/compact3
target: linux_armv6_vfp_hflt
vm: client
runtime: compact3 profile
debug: true
keep-debug-info: true
no-compression: false
dry-run: false
verbose: false
extension: []
}
Target JRE Size is 24,336 KB (on disk usage may be greater).
Embedded JRE created successfully
6.$ du -sk compact3
24480 compact3
compact3/lib/jfr/
ディレクトリを作成します。7. 以下のコマンドを使い、ファイルをFull JREからCompact3 Profileインスタンスにコピーします。$ mkdir compact3/lib/jfr
8. 必要な作業は以上です。comact3 JREのディスクの占有サイズの変異を比較しましょう。Java Flight Recorderを利用するために必要な追加のディスクスペースを確認できます。$ cd full_jre/
$ cp ./lib/jfr.jar ../compact3/lib
$ cp ./lib/arm/libjfr.so ../compact3/lib/arm
$ cp ./lib/arm/libbci.so ../compact3/lib/arm
$ cp ./lib/jfr/default.jfc ../compact3/lib/jfr
$ cp ./lib/jfr/profile.jfc ../compact3/lib/jfr
手順(5)のディスク使用量を比較すると、Java Flight Recorderを有効化するためには400KBほどのサイズが余分に必要であることがわかります。安全な方法でFlight Recorderが有効化されインスタンスにリモートから接続する方法を理解するためには、以下の記事をご覧ください。$ du -sk ../compact3
24824 ../compact3
Managing Java Flight Recorder Enabled JVMs with SSL
https://blogs.oracle.com/jtc/entry/managing_java_flight_recorder_enabled