Eclipse 使用MAT(Memory Analyze Tool)

在Eclipse上安装 MAT

help -> install New Software... -> add


Eclipse 使用MAT(Memory Analyze Tool)_第1张图片
image.png

下载MAT的地址( http://download.eclipse.org/mat/1.8.1/update-site/
)可以在官网上查询: https://www.eclipse.org/mat/downloads.php

按照提示安装即可.

使用MAT

  1. 在运行目标程序是,配置VM参数: -XX:+HeapDumpOnOutOfMemoryError


    Eclipse 使用MAT(Memory Analyze Tool)_第2张图片
    image.png

这样可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便分析.

2.案例:执行代码后报错:

import java.util.ArrayList;
import java.util.List;

public class JVCode_2_3_HeapOOM {
    
    static class OOMObject {
    }
    

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List list = new ArrayList();
        while(true) {
            list.add(new OOMObject());
        }
    }
}
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid20186.hprof ...
Heap dump file created [27713936 bytes in 0.137 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3210)
    at java.util.Arrays.copyOf(Arrays.java:3181)
    at java.util.ArrayList.grow(ArrayList.java:265)
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:239)
    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:231)
    at java.util.ArrayList.add(ArrayList.java:462)
    at JVCode_2_3_HeapOOM.main(JVCode_2_3_HeapOOM.java:14)
  1. 在Eclipse中打开MAT视图
Eclipse 使用MAT(Memory Analyze Tool)_第3张图片
MAT
  1. 打开项目中的Dump文件:


    Eclipse 使用MAT(Memory Analyze Tool)_第4张图片
    image.png
  2. 查看具体内存情况:


    Eclipse 使用MAT(Memory Analyze Tool)_第5张图片
    image.png

从这块就可以看出具体是哪些对象占用了大部分的内存:


Eclipse 使用MAT(Memory Analyze Tool)_第6张图片
image.png

你可能感兴趣的:(Eclipse 使用MAT(Memory Analyze Tool))