JVMのパラメーター

参考にしたサイト
http://blog.ik.am/entry/view/id/85/title/JVM%E3%81%AE%E3%83%92%E3%83%BC%E3%83%97%E3%83%BBGC%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%BE%E3%81%A8%E3%82%81/
http://www.whitemark.co.jp/tec/java/javagc.html

抜粋---
■ 運用環境で是非設定しておくべきJava起動オプション

                                                                                            • -

 -server サーバーモードを有効化
 -Xms Javaヒープ初期サイズ。一般的に、-Xmxと同値にする
 -Xmx Javaヒープ最大サイズ
 -Xmn(-XX:NewSize) New領域初期サイズ。一般的に、-XX:MaxNewSizeと同値にする
 -XX:MaxNewSize New領域最大サイズ
 -XX:PermSize Permanent領域初期サイズ。一般的に、-XX:MaxPermSizeと同値にする
 -XX:MaxPermSize Permanent領域最大サイズ
 -verbose:gc(-Xloggc:path_to_file) GCログ出力を有効化
 -XX:+PrintGCTimeStamps GCログにタイムスタンプ(Java起動時からの経過時間)を出力
 -XX:+PrintGCDetails GCログを詳細に出力(New領域とJavaヒープそれぞれが
  どれだけ減ったか出力される)
 -XX:+PrintClassHistogram*1 SIGQUITシグナル受信時にヒープ統計情報を出力
  (出力時に強制的にフル GCが発生)。-verbose:gc(-Xloggc:path_to_file)と併用必須。
  なお、SIGQUITシグナルを送信するには、kill -3 を実行すればよい
 -XX:+HeapDumpOnOutOfMemoryError OutOfMemoryError発生時にヒープダンプを出力
  (Sun Java 1.4.2_12以上、1.5.0_07以上、1.6以上)

    • -

アプリケーションサーバーにおいて、Java Heapに4GBを割り当てる場合の参考値。

  • server

■メモリ設定系--------------------------------------------------------

  • Xms 4096M
  • Xms 4096M
  • Xmn 1024M
  • XX:MaxNewSize 1024M
  • XX:PermSize 256M
  • XX:MaxPermSize 256M
                                                                                                                                            • -

NewSizeは、SunVM場合、Heapの25%。
PermSizeは、Applicationによるが、AOPでリフレクションが多い場合は大きく積む。ASで64MB、Applicationで128MBの計算。

GCダンプ系-----------------------------------------------------------

  • verbose:gc
  • Xloggc:filename
  • XX:+PrintGCTimeStamps
  • XX:+PrintGCDetails
  • XX:+PrintClassHistogram
                                                                                                                                            • -

GC系-----------------------------------------------------------------

  • XX:SurvivorRatio=16
  • XX:MaxTenuringThreshold=32
  • XX:TargetSurvivorRatio=90
  • XX:+UseParNewGC
  • XX:+UseConcMarkSweepGC
  • XX:+CMSIncrementalMode
  • XX:+CMSIncrementalPacing
  • XX:CMSIncrementalDutyCycleMin=0
  • XX:CMSIncrementalDutyCycle=10
  • XX:+UseTLAB
  • XX:+CMSParallelRemarkEnabled
  • XX:+CMSClassUnloadingEnabled
                                                                                                                                              • -

UserTLABは、スレッド ローカルのオブジェクト割り当てブロックを使用します。これにより、共有ヒープ ロックに対する競合の発生が減少して、同時実行性が向上します。