天天看點

JVM調優案例-NewRatio使用

記一次線上生産JVM調優過程。

一. 線上問題,no BB,看圖

應用堆記憶體使用情況如下圖:

JVM調優案例-NewRatio使用

應用youngGC如下圖:

JVM調優案例-NewRatio使用

這裡沒有給出fullGC的圖檔,基本上每一小時一次fullGC。

正常應用堆記憶體使用情況如下

JVM調優案例-NewRatio使用

正常應用youngGC情況

JVM調優案例-NewRatio使用

二. 分析

正常應用youngGC比較頻繁,每次時間短;有問題應用youngGC次數少,每次GC時間長;且fullGC均能回收系統記憶體;

懷疑新生代和老年代的比例或新生代eden和Survivor比例不合理導緻。可以使用-XX:NewRatio和 -XX:SurvivorRatio調整

-XX:NewRatio=2   :新生代和年老代的堆記憶體占用比例, 例如2表示新生代占年老代的1/2,占整個堆記憶體的1/3

-XX:SurvivorRatio=8: Eden與Survivor的占用比例。例如8表示,一個survivor區占用 1/8 的Eden記憶體,即1/10的新生代記憶體,為什麼不是1/9?因為我們的新生代有2個survivor,即S0和S1。是以survivor總共是占用新生代記憶體的 2/10,Eden與新生代的占比則為 8/10

三. 結論

經過多次測試,設定-XX:NewRatio=4 應用記憶體得到改善,預設是-XX:NewRatio=2,堆記憶體使用如下圖,調整後堆記憶體使用在1G以下。

JVM調優案例-NewRatio使用

歡迎探讨!

參考

https://www.cnblogs.com/langtianya/p/3898760.html

https://blog.csdn.net/sunny243788557/article/details/52796904

https://www.jianshu.com/p/8d8aef212b25