GC问题汇总

GC问题汇总

一、系统不停地进行Major GC

1、情景描述

系统不停地进行Major GC,每隔十几秒就会就行一次Major GC,Remark时间超过1s,CMS-concurrent-abortable-preclean-start超过5s,Minor GC频率还算正常。参考下图:


系统频繁Major GC图.png

CMSInitiatingOccupancyFraction值为70,但通过jstat -gcutil发现老年代一直都是超过70%,说明Major GC对老年代没起多大作用,崩溃有木有。


jstat查看堆各部分情况.png

2、解决

可以先用jmap,dump出当前堆信息,然后用jhat来分析,发现有一个HashMap相当大。这个时候我觉得可以分析下代码了。最后看代码,是因为服务启动时,初始化了mongo的数据到内存中,并且量很大,直接放入了老年代且无法回收造成的。要解决只能调大内存或者业务上可以妥协的话,把这部分常驻内存的代码给去掉。

二、Minor GC时一直出现Allocation Failure

1、情景描述

Minor GC时一直出现Allocation Failure的现象,起初以为是严重的GC问题,后来谷歌大半天,发现这是Java 1.8特有的Minor GC时的提示,表示新生代伊甸区已经满了,需要进行GC了,但这个提示非常不友好,导致很多人以为服务出现了问题,实际上并不需要care啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://www.cnblogs.com/angeldevil/p/3801189.html值得一看 Clas...
    snail_knight阅读 1,459评论 1 0
  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 6,027评论 2 31
  • 一 、java虚拟机底层结构详解 我们知道,一个JVM实例的行为不光是它自己的事,还涉及到它的子系统、存储区域、...
    葡萄喃喃呓语阅读 1,527评论 0 4
  • 作者:一字马胡 转载标志 【2017-11-12】 更新日志 日期更新内容备注 2017-11-12新建文章初版 ...
    beneke阅读 2,236评论 0 7
  • 参考链接:http://www.iteye.com/topic/1119491 为了分代垃圾回收,Java堆内存分...
    玩裤阅读 800评论 0 2