arthas 进行内存溢出分析

有做过测试的同学,应该或多或少都见过 OOM 的错误吧

arthas 进行内存溢出分析

 

这种错误日志见过吗?相信很多人,都很熟悉,老朋友了。

但是,这种问题,我们怎么才能准确定位到问题根源呢?

很多测试朋友可能就望而却步了,说这是开发人员的事情,让开发人员去排查好了。你如果是初、中级测试工程师,你可以这样说,但是,如果你是高级测试工程师,你是性能测试工程师,那,恐怕就是你不负责任了。

当你深入学习了之后,你可能发现 jvm 自带的 jmap 可以查看这种内存溢出问题,但是,当你真正去用的时候,你又会发现,你想用一个 jmap 来抓取内存溢出的包,估计你得等到海枯石烂,天荒地老,时间非常长,而一旦中间中断,你这次抓包就失败了。

今天给大家介绍一个神器——arthas,它是阿里开源的一款 jvm 分析工具。

现在我有个项目,就有内存溢出问题

首先,启动项目,再启动 arthas,查看到这个项目堆使用率约 26%

arthas 进行内存溢出分析

 

接下来,我们用 jmeter 调用这个项目的接口,进行性能测试,发现马上就出现了“Handler processing failed; nested exception is
java.lang.OutOfMemoryError: Java heap space” 错误。

这时候,我们从 arthas 中,可以看到该项目的堆使用率瞬速达到 83% 以上

arthas 进行内存溢出分析

 

出现这样的情况,肯定就是出现了 OOM 问题了,此时,我们只需要按一下'q'键, 然后输入’heapdump‘ 回车

就会看到正在生成一个 hprof 文件,稍等 1 分钟左右,就生成结束,就可以去 Tomcat 的 temp 路径下查找这个文件

arthas 进行内存溢出分析

 

把文件下载下来,然后用 MAT 工具打开

arthas 进行内存溢出分析

 

这里就详细地看到了具体的类,你可以把这个 hprof 文件给开发,或者把这个定位到具体类的截图给开发,接下来,就真正式开发忙活的时候了。

是不是 忒简单了,你掌握了吗?

推荐一个软件测试学习交流群:785128166,群里有分享的视频,面试指导,测试资料,还有思维导图、群里有视频,都是干货的,你可以下载来看。主要分享测试基础、接口测试、性能测试、自动化测试、TestOps架构、Jmeter、LoadRunner、Fiddler、MySql、Linux、简历优化、面试技巧以及大型测试项目实战视频资料。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

公众号:程序员二黑, 关注后免费领取海量学习资料。

好东西要和朋友一起分享哦
 

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值