一、下载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这个类耗费了我们大量的资源。同时还可以点击”线程转储“,查看错误具体出现在代码的哪一行,如图: