BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JAX London: Java Flight Recorderを用いて製品の時間プロファイルを行う

JAX London: Java Flight Recorderを用いて製品の時間プロファイルを行う

ブックマーク

原文(投稿日:2016/10/22)へのリンク

今年のJAX Londonにおいて、OracleのJavaプラットフォームグループに所属するOla Westin氏はJava Mission Control (JMC)とJava Flight Recorder (JFR)について発表を行なった。

JMCとJFR双方の概要に続き、Westin氏は観客に記録がどう生成・解析されるかを説明し、それからデモを行なった。この記事ではInfoQはWestin氏の発表を紹介する。

/Users/monicabeckwith/Desktop/JFRJMC.jpg

Java Mission Controlの概要

Java Mission Controlは(サーバの加工されていないビューを提供する)JMX consoleと(プロファイルとアプリケーションデータの診断を支援する)Java Flight Recorderの助けを借り、Java仮想マシン(Java VM)の動作の可視化を支援するGUIである。

JMC(jmcというコマンド)はJava開発キット(JDK)に同梱され、binディレクトリに配置されている。…onsoleLog ‥ebugオプションを用いて追加のログを取得することができる。(DTrace、JMXコンソールなどのような)様々な実験的プラグインがJMCからダウンロードすることができる。

ョ・

Java Flight Recorderの概要

Java Flight RecorderはJava VM同様Javaアプリケーションの振る舞いに関する情報を収集する。JFRはJava VM内部に構築され、実行時情報をユーザに提供する。JFRの動作はどんなJava VMの動作を邪魔することもなく、オーバヘッドも2%以下と最小限に留められている。

JFRは即時イベント、期間イベント、リクエスト可能イベントのような異なるイベントを持つ。即時イベントは(スレッドの開始のような)特定の一点の時刻に発生し、そのため最もオーバヘッドが少ない。これに対し、(ガーベジコレクションなどのような)期間イベントはしきい値に基づき、(メソッドプロファイルサンプルのような)リクエスト可能なイベントも同様に設定可能な周期を持つため、これらのイベントのオーバヘッドはばらつくであろう。

JFRのサンプリングプロファイラはセーフポイントとなるためのスレッドを必要とせず、全ての単一のメソッド呼び出しをロギングするわけではない(ホットメソッドを検知したときのみ)。この発表においては、Nativeコードを起動するスレッドのサンプリングが行われなかった。

二種類の記録が存在する。時間が固定された(プロファイル)記録と継続記録である。双方ともファイルにダンプされる。

記録を生成する

JFRを用いて記録を開始するために、JVMに下記のオプションを指定する必要がある。-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

Java8 update 40からは、JMCとjcmdの選択肢のどちらを用いても実行時にJFR記録を生成することができるようになった。

下記の3つの図は、上に示した3つのオプションのそれぞれによりJFR記録がどう生成されるかを示したものである。

strt.jpg

strt2.jpg

strt3.jpg

下図で示すようにリモートシステムにおいて記録することもできる。

remote.jpg

記録を解析する

Westinの発表では全ての調査に入る前に正しい問いに回答することの重要性を強調した。彼は下記に示す"ホットメソッド"問題に焦点を当てたデモについて言及した。

hotmethods.jpg

ここで、"ホットメソッド"タブが選択されたとき、LinkedList.indexOf(Object)の処理が収集されたサンプル全体の97.35%を占めていることを確認できる。スタックを下がっていくと、O(n)を必要とするcontains(Object)メソッドがリンクリスト内にあることを発見できる。これを修正するために、Westin氏はLinkedListをHashSetに置き換えたコードに対して別のJFR記録を実行した。その結果は以下である。

hotmethod_fixed.jpg

次にWestin氏は更に2つのデモを見せた。1つはスレッドの競合で、もう1つはオートボクシングに伴うメモリの割り当てである。それから彼は将来の展望に関してまとめた。

Rate this Article

Relevance
Style

この記事に星をつける

おすすめ度
スタイル

BT