手把手看监控--当不设置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情况

 

 

 

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