1 软件下载及配置
1.1软件下载
eclipse ide,它非常有用。因为memory analyzer在分析堆内存的时候比较耗费内存,而eclipse ide本身又是比较耗费内存的,所以推荐使用独立安装的memory analyzer。
安装包地址:https://www.eclipse.org/mat/downloads.php
独立安装的memory analyzer的独立版本所需的最低java版本是java 11。
1.2 软件设置
eclipse memory analyzer
默认的启动堆最大内存为1g
。这一步取决你堆内存文件的大小。我这边正式环境导出的堆文件大小大概3g
多一点。所以索性我就将eclipse memory analyer
,启动最大堆内存调成4g
。- 操作步骤如下。
- 文件目录。
- 修改
2 堆内存下载
使用命令 jmap -dump 下载堆内存数据
3 分析异常文件
3.1 打开错误
错误1:an internal error occurred during: “parsing heap dump from
解决方案:在mat目录下找到memoryanalyzer.ini配置文件,修改-xmx的大小大于你当前文件的大小
eg: 当前下来的文件是2.5g,可以设置为4096m
3.2 分析步骤
- 点击 leak suspects (泄露疑点)
2:点击如下图:
详情如下
可以看出内存泄露的相关类
补充:
也可以通过 histgram 和 dominator tree 分析文件
进入详情页之后,查找占用空间最大的类,然后通过 path to gc roots 和 可以通过右键 -> list objects -> with incoming references来查看具体是谁在使用这些byte[]。
发表评论