問題:
線上在維護的一個項目,在每次項目發布啟動的時都會觸發一次Full GC 。
排查:
1:結合GC日志查看發生成Full GC 都是項目剛啟動就會發生一次垃圾整理回收的過程如下圖:
2:結合監控系統查看指標發現MeataData使用量如下圖:
檢查JVM參數設置發現參數設置為:
-XX:MetaspaceSize=96m, -XX:MaxMetaspaceSize=192m:這個代表元空間初始值為:96m,最大可占用192m,
結合監控系統的指標:系統運行穩定的情況下MeataData的值在130m左右。
問題引起原因:如果元空間使用量一旦達到或者超過-XX:MetaspaceSize=96m初始值,就會進行擴容,擴容時會引起Full GC。
解決問題:
調整jvm參數為:-XX:MetaspaceSize=192m, -XX:MaxMetaspaceSize=192m
驗證:
調整參數后重新發布項目,發布后,Gc日志情況如下圖:
通過一段時間的監控問題得到解決。