アプリケーションでは、次の-verbose:gc
[GC (Metadata GC Threshold) 8530310K->2065630K(31574016K), 0.3831399 secs]
[Full GC (Metadata GC Threshold) 2065630K->2053217K(31574016K), 3.5927870 secs]
[GC (Metadata GC Threshold) 8061486K->2076192K(31574016K), 0.0096316 secs]
[Full GC (Metadata GC Threshold) 2076192K->2055722K(31574016K), 0.9376524 secs]
[GC (Metadata GC Threshold) 8765230K->2100440K(31574016K), 0.0150190 secs]
[Full GC (Metadata GC Threshold) 2100440K->2077052K(31574016K), 4.1662779 secs]
これは何ですか "Metadata GC threshold"およびそれを減らす方法。注:Full GCはクリーンアップに長い時間を費やしますが、実際には多くのクリーンアップを行います。つまり、これを行わなかった方が良いでしょう。
ログメッセージは、GCがMetaspace割り当てエラーによって引き起こされたことを示しています。 メタスペースはクラスのメタデータを保持します。 登場しました Java 8で置き換えるPermGen。
ここにあります 調整するいくつかのオプションメタスペース。
次のオプションの1つまたは複数を設定できます。
-XX:MetaspaceSize=100M
最初に超過したときにガベージコレクションをトリガーする、割り当てられたクラスメタデータスペースのサイズを設定します。
-XX:InitialBootClassLoaderMetaspaceSize=32M
ブートクラスローダーのメタスペースを増やす。
-XX:MinMetaspaceFreeRatio=50
メタスペースをより積極的に成長させるため。
-XX:MaxMetaspaceFreeRatio=80
メタスペースが縮小する可能性を減らすため。
-XX:MinMetaspaceExpansion=4M
メタスペースが拡張される最小サイズ。
-XX:MaxMetaspaceExpansion=16M
Full GCなしでメタスペースを拡張する最大サイズ。