使用mat工具快速分析OOM

430 阅读1分钟

工具准备

下载MAT工具,下载地址:www.eclipse.org/mat/downloa…,解压后,windows的话直接运行MemoryAnalyzer.exe即可

代码准备

写一段会oom的代码

public class GCtest {
    private String[] val = new String[10000];

    public static void main(String[] args) {
        Map<String, GCtest> map = new HashMap<>();
        int i = 0;
        while (true) {
            map.put(String.valueOf(i), new GCtest());
            i++;
        }
    }
}

添加运行参数

 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=your path
 不加HeapDumpPath 默认当前目录

分析

运行代码,生成.hprof文件,运行mat分析工具打开文件,可以看出hashmap里面的对象迟迟没有释放