昨日発生していたサイトログインできない不具合は修正されております(詳細はこちら)

Tuning Java SE for Throughput and Latency #java_tune

Oracle University 特別セミナー:Tuning Java SE for Throughput and Latency http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=152406 ハッシュタグ #java_tune を中心にあまりまとまっていないけどまとめました。アジェンダは以下。 - Javaパフォーマンスチューニングの概要 - Java HotSpot VMのガベージ・コレクション 続きを読む
6
前へ 1 ・・ 3 4 次へ
KUBOTA Yuji @sugarlife

今書いてて気づいたが、資料はStop The Wordになってるw #java_tune

2012-06-06 15:37:00
btnrouge @btnrouge

大抵のアプリには世代別GCが最適#java_tune

2012-06-06 15:37:20
KUBOTA Yuji @sugarlife

正確にはステッド停止処理には、 “@sugarlife: Serial GCのSTW(Stop The World)は、VMThread上で、SafepointSynchronizeという処理を行う。 #java_tune

2012-06-06 15:38:18
KUBOTA Yuji @sugarlife

Parallel GCはServerモードのJVMのデフォルト。 #java_tune

2012-06-06 15:40:51
btnrouge @btnrouge

Parallel GCはYoungのみマルチスレッドでGC。Parallel Old GCはOldも含めてマルチスレッドでGC。 #java_tune 紛らわしい名前…

2012-06-06 15:43:49
Toshiaki Maki 💉💉 @making

CMSはInitial MarkとRemarkでStop The World. -XX:+PrintGCDetailsで確認できる #java_tune

2012-06-06 15:50:04
btnrouge @btnrouge

CMSは遅いけどpauseは小さい。ただし先にOldが埋まるとFull GCの罠。 #java_tune

2012-06-06 15:54:53
Takahiro YAMADA @yamadamn

#java_tune インクリメンタルCMSは-serverタイプでは使うな

2012-06-06 15:55:43
Takahiro YAMADA @yamadamn

このConcurrent Mode Failureは結構時間かかるので厄介ですね "@btnrouge: CMSは遅いけどpauseは小さい。ただし先にOldが埋まるとFull GCの罠。 #java_tune"

2012-06-06 16:06:33
Toshiaki Maki 💉💉 @making

G1のCMSとの大きな違いはCompacting,Improved East-Of-Use,Predictable(although not hard real-time) #java_tune

2012-06-06 16:08:41
KUBOTA Yuji @sugarlife

GCのBestは小さなオーバヘッド、小さなポーズ時間、効率的なメモリの利用。これらのうち2つの特性を選ばないといけない#java_tune

2012-06-06 16:14:28
Toshiaki Maki 💉💉 @making

java -XX:+PrintFlagsFinal -version | grep "PermSize" #java_tune

2012-06-06 16:23:57
KUBOTA Yuji @sugarlife

-Xms等と同じように-XX:PermSizeと-XX:MaxPermSizeは同じ値にする。Perm領域のサイズが変更(growing/shrinking)する際にFullGCが発生するため。 #java_tune

2012-06-06 16:26:16
KUBOTA Yuji @sugarlife

-Xmnを設定すると、-XX:NewSizeと-XX:MaxNEwSizeが同じ値に設定される。 #java_tune

2012-06-06 16:27:07
KUBOTA Yuji @sugarlife

Fragmentation:断片化して割当を満たす空きチャンクがない。割当サイズの丸め上げで場所が無駄になるの2タイプある。 #java_tune

2012-06-06 16:43:09
Toshiaki Maki 💉💉 @making

CMSをつかうとデフォルトでClassはあんロードされない -XX:++CMSClassUnloadingEnabledと-XX:+PermGenSweepingEnabledを設定しないといけない #java_tune

2012-06-06 16:47:54
KUBOTA Yuji @sugarlife

CMSのクラスアンロードは 6u4からは -XX:+CMSClassUnloadingEnabledのみでよい #java_tune

2012-06-06 16:49:01
Toshiaki Maki 💉💉 @making

-XX:+PermGenSweepingEnabledは6u4以降不要 #java_tune

2012-06-06 16:51:16
KUBOTA Yuji @sugarlife

本番環境でもGC logは取得しましょう。本番環境でもGC logは取得しましょう。 #java_tune

2012-06-06 16:59:07
KUBOTA Yuji @sugarlife

GC解析ではOnlineではVisualVM、VisualGCを、OfflineではGC Logging, GCHisto+PrintGCStats, その他 GCViewer などの3rdParty製を利用 #java_tune

2012-06-06 17:01:20
KUBOTA Yuji @sugarlife

6u4から-XX+PrintGCDataStampsを使うといい。JVM起動時からのミリセコンド秒表示がカレンダー型で表示されるようになる。 #java_tune 6u4からだったのは(具体的なマイナー番号を)知らなかった。

2012-06-06 17:23:19
KUBOTA Yuji @sugarlife

-d32/64はSolaris版などJDK/JRE homeが両方の実行環境を含む場合のみ。 #java_tune

2012-06-06 17:24:41
KUBOTA Yuji @sugarlife

32GBより大きいヒープでは参照がポインタ(8byte)になるたm,CompressedOopsよりスペースの面でオーバヘッドがある。 #java_tune

2012-06-06 17:25:37
KUBOTA Yuji @sugarlife

GCの選択。最初はParallelOldGC。Latencyが重要な場合などは CMS or G1 。メモリ使用量が小さい場合はSerial GCを検討。 #java_tune

2012-06-06 17:28:31
Takahiro YAMADA @yamadamn

#java_tune スマホで打つの諦めたので、必要に応じてリツイートする残念プラクティス

2012-06-06 17:30:32
前へ 1 ・・ 3 4 次へ