服务器JVM每隔几分钟发生一次GC,一天挂了四次,请教各位大神原因?
每隔三四分钟,就发生一次GC,大多数情况服务无影响,但今天有四次服务器CPU长期100%,导致直接无法访问
问下怎么查是程序那块代码引起的?请教各路大神
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
每隔三四分钟,就发生一次GC,大多数情况服务无影响,但今天有四次服务器CPU长期100%,导致直接无法访问
问下怎么查是程序那块代码引起的?请教各路大神
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(18)
这玩意我记得会随着用户注销而清理的,用户session也应该有个存活时间
有一个配置 shiro提供了一个清理的shecdlue
一般都是代码的原因 可以有意的注意下 在什么情况下会GC 去找导致GC那段代码
趁这个帖子人数多,问下,java Shiro的session过期后,还会存在于内存中,怎么才能及时从内存中清理掉?
回复
需要配置shecdlue
确实有几十万,自己也是醉了
回复
不是,是Tomcat停止时会序列化缓存,启动时又加载了,没有及时清理,日累月积后挂了
现在的服务端,最少也是2核4G的配置吧,你不会把几十或上百万的数据放到内存里了吧,然后频繁GC与加载。
回复
所以我将我们公司的ehcache改成了redis缓存,用内存缓存是有点不好管理
回复
请问下这个缓存指的是什么?session?
回复
是的
回复
Tomcat停止时会序列化缓存,这个是啥
谢谢各位回复,暂时找到原因了,缓存了过多对象引起的老年代占满,导致频繁GC
去年处理过一次你这种情况,我当时是查询慢引起缓存没起作用导致的。你很可能一样的原因.
dump下来看看
gc和内存有关,你贴一个cpu的,你看一下堆内存的变化,考虑内存泄漏问题,据我的经验检查一下io相关的,比如数据库连接,网络socket等是不是没有关闭;还有就是缓存,hashMap之类的,是不是在一直在做添加
胡说八道!内存占用过高才导致gc行为,内存溢出则需要查看内存快照,快照间隔的增量内存分析出具体引发内存增加的原因。如果是netty则有可能是网络不稳定导致队列过长,从而内存爆增,解决方方法可以尝试延长因超时重连时间。cpu占用过高则要考虑算法的优化,同时检查是否使用了大量的线程同步锁导致线程阻塞。
目测内存泄漏了。cpu100%估计也是gc现成引起的。