使用JProfiler排查内存溢出(OOM)

一、下载JProfiler客户端

下载地址:https://www.ej-technologies.com/download/jprofiler/files
无脑下一步,选择IDEA即可,然后集成。

二、IDEA集成JProfiler插件

在这里插入图片描述
安装完成后如果IDEA的右上角有下图标志,即为安装成功,如果没有的话,可以重启IDEA尝试。
在这里插入图片描述
接下来进行绑定客户端,如下图:
在这里插入图片描述
笔者此处使用的是Mac版本,选择后缀为app的JProfiler即可,如果为windows的小伙伴应该是在需要选择bin目录下的JProfler.exe文件。

三、测试

3.1 添加启动配置

在这里插入图片描述
在VM options中添加启动参数:

-Xms28m -Xmx56m -XX:+HeapDumpOnOutOfMemoryError

最后一句”-XX:+HeapDumpOnOutOfMemoryError“的目的就是为了当出现OOM异常时,能够将错误的dump文件生成出来。为了方便测试,这里分配的内存可以小一点。
在这里插入图片描述

3.2 测试代码

Pojo:

@Data
public class ThirdUser extends BaseEntity {

    /**
     * 用户名
     */
    private String username;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 爱好
     */
    private String hobby;

}

Service:

public void oomTest() {
    List<ThirdUser> list = new ArrayList<>();
    while(true) {
        ThirdUser thirdUser = new ThirdUser();
        thirdUser.setUsername("1");
        thirdUser.setAge(1);
        thirdUser.setHobby("ctrl");
        list.add(thirdUser);
    }
}

Controller:

@GetMapping("/oom")
@ApiOperation(value = "OOM测试", notes = "OOM测试", httpMethod = "GET")
public ApiResult<Void> oomTest() {
    thirdUserService.oomTest();
    return ApiResult.ok();
}

启动项目,访问接口,控制台输出:
在这里插入图片描述
红框中的数据表示生成的文件名,可以在项目的根目录下找到这个文件
在这里插入图片描述
直接双击打开即可,会弹出JProfiler的窗口:
在这里插入图片描述
这里我们可以清晰的看到是ThirdUser这个类耗费了我们大量的资源。同时还可以点击”线程转储“,查看错误具体出现在代码的哪一行,如图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值