千丝万缕的FGC与Buffer pool

  1. 云栖社区>
  2. 中生代技术>
  3. 博客>
  4. 正文

千丝万缕的FGC与Buffer pool

jurassic_1 2016-12-20 14:04:00 浏览3426
展开阅读全文

1 背景

运维通知,线上系统一直在FGC,通过zabbix查看GC 的次数

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

再查看YGC和FGC空间占用情况

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

这里有几个疑问

1:old space 空间一直很低,为什么会有频繁的FGC?

2:Eden space 回收的阈值为什么越来越低,越来越频繁?

3:从Eden space空间看一直在YGC,但是从YGC的次数看并没有过YGC?

4:FGC的越来越频繁,到最后为什么一直在FGC?

第一个问题

通过查看打印出来的ERROR日志,确定是Direct buffer 不够。在申请DirectByteBuffer的时候,会检查是否还有空闲的空间,剩余空间不够,则会调用system.gc,引起FGC(具体后续会详细介绍)。这里可以解释old space很低,但是一直FGC。并不是old区不够用,而是堆外空间不够用。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

第二个问题

FGC是对整个堆进行GC(



































网友评论

登录后评论
0/500
评论
jurassic_1
+ 关注
所属团队号: 中生代技术