天天看點

jvm -XX:MetaspaceSize 元空間設定過小引發Full GC的優化

問題:

線上在維護的一個項目,在每次項目釋出啟動的時都會觸發一次Full GC 。

排查:

1:結合GC日志檢視發生成Full GC 都是項目剛啟動就會發生一次垃圾整理回收的過程如下圖:

jvm -XX:MetaspaceSize 元空間設定過小引發Full GC的優化

2:結合監控系統檢視名額發現MeataData使用量如下圖:

jvm -XX:MetaspaceSize 元空間設定過小引發Full GC的優化

檢查JVM參數設定發現參數設定為:

-XX:MetaspaceSize=96m, -XX:MaxMetaspaceSize=192m:這個代表元空間初始值為:96m,最大可占用192m,

結合監控系統的名額:系統運作穩定的情況下MeataData的值在130m左右。

問題引起原因:如果元空間使用量一旦達到或者超過-XX:MetaspaceSize=96m初始值,就會進行擴容,擴容時會引起Full GC。

解決問題:

調整jvm參數為:-XX:MetaspaceSize=192m, -XX:MaxMetaspaceSize=192m

驗證:

調整參數後重新釋出項目,釋出後,Gc日志情況如下圖:

jvm -XX:MetaspaceSize 元空間設定過小引發Full GC的優化

通過一段時間的監控問題得到解決。

jvm