GC overhead limit exceeded问题解决

一、问题解决思路
1.遇到内存溢出问题首先应该去查看debug日志,一般都会有相关报错信息。找不到再去查看gc.log和dump文件,如果系统没生成gc.log文件需要添加配置,下次内存溢出后就可以看到日志了。

-Xloggc:./temp/gc.log
-XX:HeapDumpPath=./temp/dump.hprof

2.通过在gc.log搜索FuIl GC等关键词,可以知道发生的时间点,然后可以去指定时间搜索相关debug日志,模糊的定位到问题代码,结合dump文件和实际的代码确认问题所在。

二、内存分析
1.生成dump文件
通过ps命令找到指定应用pid带入jmap命令即可

ps -ef|grep java
jmap  -dump:format=b,file=heap.hprof pid

2.使用工具分析dump文件
(1)这里推荐常用的Jprofiler,附上下载地址:https://www.ej-technologies.com/jprofiler/download
(2)Jprofiler官网介绍文档:https://www.ej-technologies.com/resources/jprofiler/help/doc/main/introduction.html
(3)直接使用Jprofiler打开即可.hprof文件即可。
J
①查看占比较多的类,后面有用
在这里插入图片描述
②查看大对象
在这里插入图片描述
③对大对象进行引用分析
在这里插入图片描述
④可以一步步点进去,或者使用图表去分析最终的引用,发现就是第一步发现的那些占用较多的类。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.结合使用的内存配置分析大对象

例:jvm配置为server -Xms1024M -Xmx1024M -Xmn512M -Xss512K,而大对象为ibatis相关对象,推测为数据库中的数据过一次性查的太多,或者请求数据库次数太多。

(1)分析内存配置
①初始堆内存(Initial Heap Size, -Xms) 和 最大堆内存(Maximum Heap Size, -Xmx&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值