MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器。用于查找内存泄漏以及查看内存消耗情况。
MAT是基于Eclipse开发的,是一款免费的性能分析工具。
http://www.eclipse.org/mat/可下载并使用MAT。
使用MAT
1.获取dump文件(bin文件)
方式一:命令行使用jmap
方式二:使用JVisualVM导出
捕获的heap dump文件是一个临时文件,关闭JVisualVM后自动删除,若要保留,需要将其另存为文件。
可通过以下方法捕获heap dump:
在左侧“Application”(应用程序)子窗口中右击相应的应用程序,选择Heap Dump(堆Dump)。
在Monitor(监视)子标签页中点击Heap Dump(堆Dump)按钮。
本地应用程序的Heap dumps作为应用程序标签页的一个子标签页打开。同时,heap dump在左侧的Application(应用程序)栏中对应一个含有时间戳的节点。右击这个节点选择save as(另存为)即可将heap dump保存到本地。
获取以下代码的两次堆dump:
2.使用AMT
file->openFile->打开对dump文件。
在Thread->java.lang.Thread->main线程中,我们可以发现,在将对象置为null前,有Date和ArrayList类型的GC Roots,置为null后就没有了。