jhat命令分析hprof文件

当我们拿到hprof文件后,该如何分析呢,这时候我们可以用到jdk自带的jhat命令进行分析

jhat -J-Xmx512M *.hprof (这里的-J-Xmx参数可以不要,如果自己机器内存够大的话)

经过漫长的等待后,出现Started HTTP server on port 7000信息时,咱们就可以使用IP+port进行访问了

打开首页后,出现了是一个Arrays,这里太多了,所以我们直接忽略掉,拖到最下面,或者在页面搜索Other Queries在这里插入图片描述
这里我标出来的两部分就是比较重要的两个查询指标,including platform就是会把类似于字节,字符串信息全部进行输出,而exluding platform则不会,exluding只会显示你在项目中定义过的类。

这里我们把including的截图给放出来,
在这里插入图片描述

我们可以看到排名第一的是字节对象,他有500多万个实例化对象,所以我们可以进而分析是不是哪个地方出现了泄露,including platform就更方便了,它直接可以指出哪些自定义对象过多,我们也可以排查是不是我们在代码中new了过多的对象。

如果通过这两个选项,我们还无法定位到哪个对象过多,导致泄露所在,那么我们就可以使用show heap histogram选项在这里插入图片描述
点开后是这个样子的,我们可以通过计算total size的大小,这里的单位是字节,换算成G,看到底是哪些对象占用的内存过大,比如我这里,B对象占用了16435273443byte,换算成G,就是15.3G,jvm最大内存我设置为了16G,所以光字节对象就占了15G,那么内存溢出就肯定因为字节对象引起的了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值