お世話になります。
とあるプログラムを起動させた結果、以下の通りとなりました。
※このプログラムは一連の短い処理を繰り返し行い、常駐化するものになります。
jstat -gc -h10 8296 1000(抜粋)
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT 0.0 0.0 0.0 0.0 1101824.0 1047552.0 995328.0 0.0 0.0 0.0 0.0 0.0 0 0.000 0 0.000 0 0.000 0.000 0.0 0.0 0.0 0.0 1101824.0 1047552.0 995328.0 0.0 0.0 0.0 0.0 0.0 0 0.000 0 0.000 0 0.000 0.000 0.0 24576.0 0.0 24576.0 1077248.0 1024.0 995328.0 0.0 48128.0 46801.5 6144.0 5675.4 1 0.172 0 0.000 0 0.000 0.172 0.0 24576.0 0.0 24576.0 1077248.0 3072.0 995328.0 0.0 48128.0 46801.5 6144.0 5675.4 1 0.172 0 0.000 0 0.000 0.172
上記で気になったのが、1回目の YGC 発生時の S1C と S1U についてです。
S1CはSurvivor領域1の容量で、S1Uはその使用量と認識しています。
上記の場合、1回目のYGC発生時にS1Cが24576.0になっていますが、
同時にS1Uも24576.0もなっています。(100%使用済み?)
これは動きとして問題ないのでしょうか?
例を挙げると、私のイメージとしては1回目のGC発生時に
S1C : 20000.0
S1U : 10000.0
のように、S1Cという最大容量の中に
それより少ない量のものがS1Uに移動してくるものだと思っていました。
1度目のGCでS1が100%使用されてしまうことで、
後続のメモリ管理に影響が出ているような気がするのですが、
知見のある方ご教示頂けると幸いです。
何卒宜しくお願い致します。
あなたの回答
tips
プレビュー