読書会(Javaパフォーマンス)第2回議事録

[ 戻る ]


=====================================================================================
Java読書会BOF 「Javaパフォーマンス」を読む会 第2回
=====================================================================================

<開催概要>
日時:2015年07月18日 10:00-17:00
場所:川崎市教育文化会館 第3会議室
出席者(敬称略):高橋(徹)、高橋(智)、村山、藤井、平山、中澤、川崎、後藤、吉田、根本、今井、吉本、小棚木、岩室、石黒、堅田、山田(書記)

3.4 Java Mission Control
-------------------------------------------------------------------------------------

3.4.1 JFR
-------------------------------------------------------------------------------------
JFRの利用には商用ライセンスが必要?
 →個人で試すのは商用でないので、自由。商用ライセンスについては、要問い合わせ。
 →NTT開発のHeapStatsは自由に使えるが、Linux限定。

3.4.1.4 JFRでのイベントの概要
-------------------------------------------------------------------------------------
イベントとは?
 →次ページ(P70)で解説あり。
OSRとは?
 →On-Stack Replacement。4章で解説あり。


3.4.2 JFRの有効化
-------------------------------------------------------------------------------------
Java8u40から起動引数でなく、外部から接続してJFRの記録を開始することが可能。
起動してすぐ終わるプログラムはどうする?
 →起動時に指定して、終了時に出力することも可能。


3.4.3 JFRのイベント選択
-------------------------------------------------------------------------------------
「独自のイベントを定義できます」とは?
 →Marcus Hirtの記事「Creating Custom JFR Events」に解説あり。
  http://hirt.se/blog/?p=444

log4jがJMX対応しており、リモートツールでconfigを書き換えられるとの情報あり。


4章 JITコンパイラの仕組み
-------------------------------------------------------------------------------------

4.2.1 起動処理の最適化
-------------------------------------------------------------------------------------
NetBeansの起動が3秒とは、どうやって測ったのか?


4.2.2 バッチ処理の最適化
-------------------------------------------------------------------------------------
-serverは、いつかは全てコンパイルされるのでは?
 →4.4.2(P96)で解説あり。
   「これは、カウンターの値がメソッドやループの実行とともに加算されるだけでなく、時間の経過とともに減算もされるためです。」


4.3 JavaとJITコンパイラのバージョン
-------------------------------------------------------------------------------------
OpenJDKのチーム開発のJITWatchというツールで、コードキャッシュが覗けるらしい。


4.4.2 コンパイルのしきい値
-------------------------------------------------------------------------------------
「On-Stack」とは、メソッドの入り口はバイトコードで、途中のループがコンパイルされるなどの意味?
 →OpenJDKのサイトに解説あり。
  https://nothingcosmos.github.io/OpenJDKOverview/src/osr.html


4.5.1 コンパイラのスレッド
-------------------------------------------------------------------------------------
コンパイルの対象になったコードは、コンパイル完了を待つのか?
 →スタンダードコンパイルはメソッド単位。
  次回メソッドが呼びだれたときに、コンパイル後のコードになる。
 →OSRコンパイルは、コンパイル完了まではバイトコードが実行され、ループの途中で差し代わる。


4.5.2 インライン化
-------------------------------------------------------------------------------------
配列のアクセスもインライン化される?


4.5.3 エスケープ分析
-------------------------------------------------------------------------------------
「エスケープ」とは?
 →ループの中だけなど、外に出て行かないということ?


5章 ガベージコレクションの基礎
-------------------------------------------------------------------------------------

5.1 ガベージコレクションの基礎
-------------------------------------------------------------------------------------
ダングリングポインタとは?
 →不正なポインタを指している状態


次回
=====================================================================================
P125 5.1.3.2 ガベージコレクションのアルゴリズムとスループットの測定 から


誤記など
=====================================================================================
P93 -XX:XX:ReservedCodeCacheSize=N → -XX:ReservedCodeCacheSize=N

P106 コードがentrant(中に入れない、の意)でなくなるのには
      → コードがentrantでなくなる(中に入れない、の意)のには

P118 -XX:-UseSerialGCflag → -XX:-UseSerialGCフラグ


[ 戻る ]