jvm 生产环境下内存泄漏 如何定位
最近修改了一下代码导致生产环境下每隔4到5天就会出现一次内存泄漏,
报这个错:GC overhead limit exceeded
截图如下:
这个错其实就是内存快满的一个警告,如果我在jvm参数中去掉这个警告,就会直接报oom了,所以这个禁掉没有意义。
当时查看了一下jvm的gc统计情况:如下图
dump文件太大了,MAT 打不开。
求大神指导该怎么定位这个问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
生产环境下不好用这个,最好的办法也是最朴素的办法就是dump然后分析
jprofile 值得拥有
jmap -histo pid >> xx.txt
记住一定要程序还没挂之前就去弄,别等到都FGC不行了再去。分析一下哪个实例最多,看看代码,基本上是能分析出来的,还是代码的问题,多检查
分享下解决方案!
回复
@jspp : jdk加参数监控gc行为,然后结合dump快照,通过MAT分析,确定类之后在去分析代码,就能够不断的缩小范围最后解决它
已解决,还是stackoverflow高手多,国内高手都不愿意回答,好可惜!
可以dump出来分析内存用mat
哟哟
打不开,就找个大内存的,一般这样的情况,用mat 配合使用方式 jstack 情况,都能很好的定位问题