JVM中のフラグ設定の詳細


本研究の主な内容はJVMの中のフラッグ設定について詳しく説明します。
一、スタックサイズ設定
-Xmx 3550 m:JVMの最大使用可能メモリを設定して3550 Mです。
-Xms 3550 m:JVM初期使用可能メモリを設定して3550 Mです。
-Xmn 2 g:若い世代のサイズを2 Gに設定します。
-Xss 128 k:各スレッドのスタックサイズを設定すると128 Kとなります。
-XX:NewSize=4:若者サイズを4に設定します。
-XX:NewRatio=4:若い世代(Edenと二つのSurvivor区を含む)と古い世代(持久代を除く)の比率を4に設定すると、若い世代と若い世代の比率は1:4で、若い世代は全体のスタックの1/5を占めます。
-XX:SurvivorRatio=4:若者のEdenエリアとSurvivorエリアのサイズ比を設定します。4に設定すると、二つのSurvivorエリアと一つのEdenエリアの比率は2:4で、一つのSurvivorエリアは若い世代の1/6を占めます。
-XX:MaxPermSize=16 m:耐久サイズ設定は16 mです。
-XX:プレテテンシュゼータォルド=n、nより大きいオブジェクトを直接古い年代に入れる
-XX:MaxTenuringThresold=0:ごみの最大年齢を設定します。0に設定すると、若い世代の対象はSurvivor区を通りません。
-XX:+UseParalelOldGC:老年世代のゴミ収集方式を配置して並行して収集する。
全体の大きさ=若い世代の大きさ+古い世代の大きさ+長い世代の大きさ。

二、コレクタの設定
-XX:+UseSerialGC:シリアルコレクタの設定
-XX:+UseParalelGC:パラレルコレクタの設定
-XX:+UseParaledledlOldGC:パラレルの年老いたコレクションを設定します。
-XX:+UseConcMark SweepGC:コンポジットの設定

三、ゴミ回収統計情報
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xlogc:filename

四、パラレルコレクタの設定
-XX:ParalelGCThreads=n:パラレルコレクタ収集時に使用するCPU数を設定します。スレッド数を並列に収集します。
-XX:MaxGCPauseMillis=n:並列収集の最大停止時間を設定します。
-XX:GCTimeRatio=n:ゴミの回収時間を設定すると、プログラムの実行時間に対するパーセントになります。数式は1/(+n)です。
五、コンポジットの設定
-XX:+CMSIncrementalMode:増分モードに設定します。単一CPUの場合に適用します。
-XX:ParalelGCThreads=n:併合集器の若い世代の収集方式を設定して並列に収集する場合に使用するCPU数.並列にスレッド数を収集する。
以下の例を挙げます。
TestMem.javaというファイルがあると仮定します。

javac TestMem.java 
java -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 TestMem
-Xms 20 M:JVMのJavaスタックの初期サイズは20 Mです。新生代と年代を含む)
-Xmx 20 M:JVMのJavaスタックの最大サイズは20 Mで、つまり拡張不可能です。新生代と年代を含む)
-Xmn 10 M:新生代の大きさは10 Mです。
-XX:+PrintGCDetails:詳細GC情報の印刷
-XX:SurvivorRatio=8:新生代の一つであるEdenとSurvivorエリアの空間比率は8:1で、二つのSurvivorエリアと一つのEdenエリアの比率は2:8で、一つのSurvivorエリアは若い世代の1/10を占めています。
上記のフラグ情報を知ったら、以下の情報が得られます。
javaスタックの総サイズは20 M=20*1024 K=20480 Kです。
新生代のサイズ:10 M=10*1024 K=10240 K
eden space:10240 K*8/10=8192 K
from space:10240 K*1/10=1024 K
to space:10240 K*1/10=1024 K
古い世代のサイズ:20 M-10 M=10 M=10240 K
締め括りをつける
以上はJVMの中のflags設定について詳しく説明した内容の全部です。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。