jvm metaspace导致FGC

事情是这样的,jdk使用的1.8版本的, 每次程序刚一启动,大概几十秒,就会发生两次FGC,原因是CMS Final Remark,具体参数如下,其中S0C=S1C=60M,Eden=480M,old=2G-新生代=2G-600M=1.4G,



从上图可以看到,S0,S1,old区使用率都为0,M区使用率大概有17%, 却发生了两次FGC,感觉很诡异,查询原因,发现是CMS Final Remark


查看具体的日志,发现也是一样,old始终为0,新生代也只是一半



最后尝试了很多方式,决定将MetaspaceSize调大,查看本机默认值,


默认值为21810376 大概是20M,所以我设置为32M,修改后参数如下:

经过了很长时间的等待,我们发现出现了一次YGC,用时0.127,未出现FGC,正常,但有一个疑惑是,MC开始一直是4480.0(4.375M),后来变成了26496.0(25.875M),仍然没有达到32M的阈值,因此不会触发FGC

查看gc日志,也能对应上,Eden使用完了,进行一次回收,

至于这个MetaspaceSize具体应该设置多少,这个我现在倒还不是很清楚,应该是需要根据自己代码量去具体设置的,如果哪位大神知道应该怎么设置,可以告诉我,我也再尝试尝试,如果发现YGC未发生而直接发生了FGC,这可以考虑适当增大MetaspaceSize的值,还有一个要注意的是,使用netty的时候,不要屏蔽System.gc(),据说会造成不可思议的影响。

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值