一、MAT是什麼?
MAT(Memory Analyzer Tool),一個基於Eclipse的內存分析工具,是一個快速、功能豐富的JAVA heap分析工具,它可以幫助我們查找內存泄漏和減少內存消耗。使用內存分析工具從衆多的對象中進行分析,快速的計算出在內存中對象的佔用大小,看看是誰阻止了垃圾收集器的回收工作,並可以通過報表直觀的查看到可能造成這種結果的對象。
二、如何使用MAT
本文以一段小代碼爲例,講述如何將dump文件導入MAT進行分析。
import java.util.ArrayList;
public class Test01 {
byte[] byteArray = new byte[1 * 1024 * 1024];// 1MB
public static void main(String[] args) {
ArrayList<Test01> list = new ArrayList<>();
try {
for (int i = 1; i <= 40; i++) {
list.add(new Test01());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
具體方法如下:
通過 -XX:+HeapDumpOnOutOfMemoryError 參數來生成dump文件(爲產生OOM,還使用了-Xms20m -Xmx20m參數);
使用Memory Analyzer打開生成的dump文件。“File->Open heap dump...”打開指定的dump文件後,將會生成Overview選項。