遇到内存泄漏 OOM 问题,新手定位及模拟

1 确定线上oom对应的配置dump的文件的获取
不管是线上服务器还是本地服务器 出现oom的,首先获取 配置dump文件输出路径 (最快解是和运维沟通配置并找出文件)

2 新手可模拟场景如下

启动idea:模拟配置vm参数 :-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/szy/Desktop/dump/

遇到内存泄漏 OOM 问题,新手定位及模拟_第1张图片
启动idea模拟代码:

/**
    VM Args:
    //这两个参数保证了堆中的可分配内存固定为20M
    -Xms20m
    -Xmx20m  
    //文件生成的位置,作则生成在桌面的一个目录
    -XX:+HeapDumpOnOutOfMemoryError //文件生成的位置,作则生成在桌面的一个目录
    //文件生成的位置,作则生成在桌面的一个目录
    -XX:HeapDumpPath=/Users/szy/Desktop/dump/ 
 */
public class HeapOOM {
    //创建一个内部类用于创建对象使用
    static class OOMObject {
    }
    public static void main(String[] args) {
        List list = new ArrayList();
        //无限创建对象,在堆中
        while (true) {
            list.add(new OOMObject());
        }
    }
}

2 将线上的dump的文件(或本机) 装入本机jdk 下自带的dump文件分析器  visual VM

3 以举例代码为例出现的分析结果是:

遇到内存泄漏 OOM 问题,新手定位及模拟_第2张图片

 

你可能感兴趣的:(遇到内存泄漏 OOM 问题,新手定位及模拟)