学习使用eclipse MAT查看OOM的问题

首先准备测试代码:

@Controller
@RequestMapping("configdata/function")
@Api(tags = "档案配置-单据功能档案")
public class ConfigDataFunctionController extends BaseJeeeController {

    @Autowired
    private ConfigDataFunctionService configDataFunctionService;

    @RequestMapping("test")
    public ApiJson test() {
        ConfigDataFunction configDataFunction = new ConfigDataFunction();
        List<ConfigDataFunction> list = new ArrayList<>();
        List<ConfigDataFunction> temp = new ArrayList<>();

        for (int i = 0; i < 1000; i++) {
            temp.add(new ConfigDataFunction());
            for (ConfigDataFunction dataFunction : list) {
                temp.add(dataFunction);
            }
            list.addAll(temp);
        }
        return apiJson();
    }

}

准备命令行:jmap -dump:live,format=b,file=heap-dump.bin 1520

1520是 java项目的pid。

启动项目

查看项目pid,pid查看方式:

我是直接通过 jdk 的  bin 目录下  使用 jvisualvm.exe 看到的

1. 调用  test() 方法。

2. 执行cmd 上面的命令。

3. 生成dump文件(bin类型的),默认就在cmd的当前目录下

4. eclipse 安装 memory analyzer

        4.1) Help -> Eclipse MarketPlace..  -> 搜索 memory,但是我其实没有搜索到,我使用到的是下载下来zip 进行本地安装:

                4.1.1)http://ftp.jaist.ac.jp/pub/eclipse/mat/ 因为我的eclipse版本较低,我用的是1.8.1的。

                4.1.2) 具体怎么安,有很多 可以网上搜索下,我记得1.8.1 add以后 有两个复选框,只需要勾选第一个(第一个下面还有两个子的)就可以。

5. 安装好以后  选择生成的bin,

每个bin文件 单独放一个文件夹里面,因为会生成一些其他的文件,File -> Open File。

这里可能报错:错误信息:

eclipse An internal error occurred during: "Parsing heap dump from 'C:\Users

这个其实是 eclipse的堆内存不够,到eclipse目录下,找到 eclipse.ini

-Xms2560m
-Xmx10240m

这两个调大就行了

目前知道这些比较重要

 tree 里面能直观的看到 内存占比

leak suspects里面 能看到 details,点击 details能看到定位的问题,比如:

确定了问题所在 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值