Tuning Java SE for Throughput and Latency #java_tune
@sugarlife @yamadamn @making 先ほど少しだけ覗かせていただきました。今日のハッシュタグは?#java_tune ?
2012-06-06 13:47:41そのハッシュタグでいきましょう "@yoshioterada: @sugarlife @yamadamn @making 先ほど少しだけ覗かせていただきました。今日のハッシュタグは?#java_tune ?"
2012-06-06 13:48:55GCチューニングのゴールは多くのオブジェクトをYoung領域に格納させ、FullGCを避ける。GCは大量のメモリアクセスを行うので、SWAPが発生させないようにするのも重要。#java_tune
2012-06-06 13:52:59#java_tune -XX:PrintFlagsFinalは最近のオプションというのは知っていたけど6u21からだったか。
2012-06-06 13:53:13-XX:UseParallelOldGC、-XX:UseParallelGCからチューニング始めて、必要に応じて-XX:ParalellGCThreads #java_tune
2012-06-06 13:57:18ParallecGCでだめな場合、まずは64bit OSにする、メモリを足す、JVMを複数に分ける等検討しろ。そのあとConcurrentへ #java_tune
2012-06-06 14:00:12#java_tune 場合によってはアプリケーション機能ごとにJVMを分ける。それぞれ専用のプロセッサを割り当てることも考慮。
2012-06-06 14:01:49マイナーGCのポーズタイムが長い場合、CMSやG1を考えてもいい。ただしスループットは下がる #java_tune
2012-06-06 14:02:16#java_tune “@sugarlife: CMS collector を使う場合は、一般的にOLD領域を20%程大きく取る必要がある。”
2012-06-06 14:03:25CMSやG1は通常の処理と並行してGCを行うから待ち合わせ等でスループットが下がる可能性あり #java_tune
2012-06-06 14:03:52FullGCが避けられない場合、-XX:+CMSInitiatingOccupancy{Fraction|Only}で早めにCMSを起動。#java_tune
2012-06-06 14:06:46CMSでFillGCが避けられなかった場合、-XX:+CMSInitiatingOccupancyFractionをつけて早めにCMSを起動 #java_tune
2012-06-06 14:06:49CMSでFullGCが避けられない場合、Oldを大きくYoungを小さく、64bitJVMの検討、Memoryの追加、アプリを分割して複数JVMの利用検討、ヒーププロファイリングをしてオブジェクト割当を減らす。#java_tune
2012-06-06 14:08:49-XX:+UseCMSInitiatingOccupancyOnlyでほげほげ(聞き逃した) #java_tune
2012-06-06 14:08:54G1GCを使う場合は-Xms、-Xmxと-XX:MaxGCPauseMillis(目標ポーズ時間)をつけるとよい。ソフトリアルタイム的なやつ #java_tune
2012-06-06 14:15:54