20200825-内存泄漏分析-Caused by:java.lang.OutOfMemoryError:GC overhead limit exceeded

本文详细记录了一次由于SQL查询导致的内存泄漏问题,问题表现为Java应用出现'GC overhead limit exceeded'错误。通过分析内存、生成heap dump、检查内存占用高的类,最终发现业务SQL查询导致大量账单实体类实例无法释放,优化SQL并引入缓存策略解决了问题。
摘要由CSDN通过智能技术生成

问题描述:

测试环境财务服务运行一段时间后,无法响应的问题,通过登录服务器,查看日志,发现出现OOM:GC overhead limit exceeded
在这里插入图片描述

问题分析:

1、查看应用内存情况

在服务无响应时,使用top -c 查看内存情况
在这里插入图片描述
可以看到JVM配置的最大内存是4G,该应用使用的内存远超了最大内存,从这里也可以看出内存溢出了,GC overhead limit exceeded意思是垃圾回收器一直在GC,达到了上限

2、生成应用heap dump文件

先查看应用进程号,然后jmap -dump:format=b,file=heap.bin
在这里插入图片描述
使用这个命令生成dump文件
./ParseHeapDump.sh /root/heap20200820.hropf org.eclipse.m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值