首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

13gb的heap dump 如何分析

一日,线上产品跑着的,收到业务监控报警:某台应用服务器的JVM Heap打满,且HTTP请求超时无响应。

收到告警后,立即切流量,并登陆问题服务器,利用jmap和jstack保存现场,然后恢复问题服务器的服务:

上传到公司的JVM分析工具ZProfiler上进行分析,Heap 得到如下结果:

由此,估计可以从这个线程入手,到 Thread Dump 中查看:

通过线程栈,最终发现出问题原因:业务线程在执行一个查询数据库的操作,数据返回量太大,内存爆了,解决方法自然是在代码中限制数据返回量了。

工具分析得一步到位,其中发生了什么?如果没有这个工具,手工可以分析出来吗?答案是肯定的。

利用JHat对Heap文件进行分析。

13g的内存分析,一般的开发机可能会OOM。问了下同事他们的工具是怎么做到的,回复是用了 ,好吧!

对于大内存文件,哪种分析工具比较适合?

jhat 至少要花费5倍于原始heap dump文件大小的内存,先排除掉;

mat 至少占用相同于heap dump文件大小的内存;

JProfiler 界面好,响应快,可以做本地、远程进程的Attach,以及分析内存快照文件;

Yourkit Java Profiler 相对于 JProfiler 更适合远程分析;

下面是JProfiler的应用截图

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180106G0OE5C00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券