工具准备

下载MAT工具,下载地址:https://www.eclipse.org/mat/d...,解压后,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里面的对象迟迟没有释放
微信截图_20200414162119.png


stone想静静
45 声望7 粉丝

春暖花痴开 傻傻创未来