手把手看監控--當不設置JVM-Xms時

背景:

運維埋的一個坑,在該應用上只配置留-Xmx,沒有配置-Xms。

表象:

堆內存從0.2G開始,最大到0.8G,就開始執行GC,導致頻繁GC,大致間隔1分鐘/次。從下圖左側即可看到。

解決:

增加-Xms重新發版本,堆內存、GC間隔明顯看着好多了。

原因:

-Xms爲應用初始化部署的時候,向操作系統申請多少內存。如果不設置-Xms後,應用只會申請一小部分的內存,當堆內存使用達到峯值,會進行GC而不會重新申請。當應用運行一段時間,堆內存最低水位會逐漸擡高。例如該監控圖,一開始最低水位在0.2G,現在到達0.4G。當最低水位一直擡高,應用纔會向操作系統申請擴容內存使用。直到到達-Xmx設置閥值。

結論:

當只配置-Xmx,不配置-Xms,會造成頻繁GC,影響機器性能,但不會造成OOM。

改造:

修正後,堆內存清理現象明顯,GC頻率降低。

 

堆內存使用情況

 

gc情況

 

 

 

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