jvm 生产环境下内存泄漏 如何定位

发布于 2021-12-01 20:12:33 字数 532 浏览 872 评论 9

最近修改了一下代码导致生产环境下每隔4到5天就会出现一次内存泄漏,

报这个错:GC overhead limit exceeded

截图如下:


这个错其实就是内存快满的一个警告,如果我在jvm参数中去掉这个警告,就会直接报oom了,所以这个禁掉没有意义。

当时查看了一下jvm的gc统计情况:如下图


dump文件太大了,MAT 打不开。


求大神指导该怎么定位这个问题。


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

谁的新欢旧爱 2021-12-03 22:40:39

生产环境下不好用这个,最好的办法也是最朴素的办法就是dump然后分析

悟红尘 2021-12-03 22:06:32

jprofile 值得拥有

醉酒的小男人 2021-12-03 20:18:11

jmap -histo pid >> xx.txt

记住一定要程序还没挂之前就去弄,别等到都FGC不行了再去。分析一下哪个实例最多,看看代码,基本上是能分析出来的,还是代码的问题,多检查

巡山小妖精 2021-12-03 19:45:45

分享下解决方案!

悸初 2021-12-03 00:00:12

回复
@jspp : jdk加参数监控gc行为,然后结合dump快照,通过MAT分析,确定类之后在去分析代码,就能够不断的缩小范围最后解决它

倚栏听风 2021-12-02 19:34:44

已解决,还是stackoverflow高手多,国内高手都不愿意回答,好可惜!

眼眸里的那抹悲凉 2021-12-02 13:22:11

可以dump出来分析内存用mat

眉黛浅 2021-12-02 07:37:52

哟哟

清欢 2021-12-02 07:26:17

打不开,就找个大内存的,一般这样的情况,用mat 配合使用方式 jstack 情况,都能很好的定位问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文