JVM調優案例-NewRatio使用

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

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

應用堆內存使用情況如下圖:

 

應用youngGC如下圖:

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

正常應用堆內存使用情況如下

正常應用youngGC情況

 

二. 分析

正常應用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以下。

歡迎探討!

參考

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章