お世話になっております。
現在、JVMのヒープ領域について監視をしております。
jstatを用いてヒープ領域の状況を確認すると
Metaspace領域と圧縮クラス領域の使用率が常に80~90%になっています。
また、jstatの公式リファレンスの例を見ても
Metaspace領域と圧縮クラス領域の使用率が90%を超えています。
※下記の表の「M」と「CCS」参照
jstat -gcutil 21891 250 7 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 97.02 70.31 66.80 95.52 89.14 7 0.300 0 0.000 0.300 0.00 97.02 86.23 66.80 95.52 89.14 7 0.300 0 0.000 0.300 0.00 97.02 96.53 66.80 95.52 89.14 7 0.300 0 0.000 0.300 91.03 0.00 1.98 68.19 95.89 91.24 8 0.378 0 0.000 0.378 91.03 0.00 15.82 68.19 95.89 91.24 8 0.378 0 0.000 0.378 91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378 91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378
こちらの2つに関して、使用率が90%を超えてもメモリリークやOutOfMemoryExceptionは起きないという認識でよいのでしょうか。
また、問題ない場合はなぜ問題ないか教えていただけますでしょうか。
自分なりの考察は以下です。
・Metaspace領域と圧縮クラス領域はクラスやメソッドが格納される場所であまり変動しない
・Metaspace領域に関しては自動拡張するため90%超えていても問題ない
よろしくお願い致します。
追記
kuniku様から追記要望がありましたので追記しました。
CompressedClassSpaceSizeやMaxMetaspaceSize、MetaspaceSizeを取得した結果になります。
java -XX:+PrintFlagsFinal -varsion -server uintx CompressedClassSpaceSize = 1073741824 uintx MaxMetaspaceExpansion = 5451776 uintx MaxMetaspaceFreeRatio = 70 uintx MaxMetaspaceSize = 4294901760 uintx MetaspaceSize = 21807104 uintx MinMetaspaceExpansion = 339968 uintx MinMetaspaceFreeRatio = 40
また、実際にサーバで使用されているMetaspace領域と圧縮クラス領域は以下になります。
jstat -gc -t 21891 Timestamp S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 5069.1 38400.0 1024.0 0.0 676.4 88064.0 6091.0 182784.0 68608.5 96536.0 87421.7 12848.0 10462.5 45 1.385 4
MC(Metaspace領域の容量)がMetaspaceSizeを超えていることが分かります。
CCSC(圧縮クラス領域の容量)はCompressedClassSpaceSizeを超えていないようです。
回答1件
あなたの回答
tips
プレビュー