准备工作
- 安装调优工具 jprofiler
- idea 集成 jprofiler 插件
- 写一个内存溢出的demo,并配置启动参数
- dump堆栈信息
- 使用工具分析dump下来的文件
安装 jprofiler
官网下载安装 输入激活码即可,网上有很多教程
idea 集成 jprofiler 插件
集成成功后 ,idea上会显示小标志
配置jprofiler路径
内存溢出的demo
package com.li;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author liql
* @date 2021/7/17
*/
public class Test {
public static Map map=new ConcurrentHashMap();
public static void main(String[] args){
long i=0;
while (true){
map.put(i,i);
i++;
}
}
}
配置启动参数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210717112016636.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1ODEyMTgx,size_16,color_FFFFFF,t_70
参数解释:
-Xms1m 初始化堆内存大小为41m
-Xmx10m 堆内存最大值为10m
-XX:+HeapDumpOnOutOfMemoryError 设置当出现OOM时 dump堆栈信息
如果不配置,就会出现像我这种情况
启动演示dump
双击点开文件
分析
jprofiler的功能使用就不在赘述了,有需求的可以网上查找
打开文件后
查找是哪个线程的问题以及在代码的哪个位置