性能问答>metaspace空间不足导致Full gc频繁,cpu 100%>
1回复

metaspace空间不足导致Full gc频繁,cpu 100%



问题现象:服务器运行一段时间之后服务卡死,无法对外提供服务。

jvm设置:

-Xms1536m -Xmx1536m -Xss256k -XX:CompressedClassSpaceSize=256m -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=64M

使用的是CMS垃圾收集算法,之所以metaspace设置为64M是因为之前java7时候perm空间设置为64M,一直用着都没有问题,代码也没有变化,所以就这么设置。通过定位我们发现gc日志中频繁的进行Full gc,jvm线程的cpu达到100%,堆栈中的所有请求处于blocked状态,服务挂死。
使用jvisualvm监控,metaspac空间从最开始处于波浪状态到变成一条直线(最低值),所以刚开始是有进行回收的,现在想不明白,为什么回收了还会因为空间不足Full gc,而且频率非常高,有可能会产生碎片,但是这个怎么看?
产生metaspace内存泄露的代码已经找到,是因为JAXclient不断create导致的,但是对这个问题现象没法解释,希望得到解答,谢谢!

gc日志都是Metadata GC Threshold 和 Last ditch collection ,整个CMS收集有些只执行了Initial Mark。

3645 阅读
请先登录,查看1条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步