记录一次分析堆栈溢出的分析过程 2020-08-12

记录一次分析堆栈溢出的分析过程

遇到问题:生产环境已经两年正常运行,最近其中一个基础服务一直处于高的cup占用,且一直垃圾回收中。已排除环境问题

分析过程:

1获取了dump文件,在IBMAnalyizer中运行分析:java -Mmx1024m -jar ha457.jar ,选中dump文件

 2查找到堆栈溢出的部分,如图:

通过Analysis    ->  treeview

 

 

3、可以看出这两个占用了过高的内存,分析是此位置出现了问题。

4 、sessionFactoryImpl和statefulpersistencecontext两个类出现问题

5、经查阅:因为Hibernate的Session是带有一级缓存的,每个经由Session查出来的对象会填充至一级缓存,以避免多次的数据库仿问。当这几个 quartz任务的业务数据较多的时候,就会有很多对象被填入一级缓存这样一来持久化上下文中保存的对象越来越多。最终导致堆栈溢出

6、因为此项目使用了jpa,访问量也很大,很可能引起上述session的问题,建议jpa修改成mybatis写法。(能不用jpa就不要使用,坑还是很多的)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值