分析成功以后,会生成如下一堆索引文件(.index)和分析报告(.zip)
将这些文件打包下载到本地机器上,用MAT GUI打开就可以分析了。
在MAT里打开dump文件的时候,可以选择打开已经生成好的报告,比如Leak suspects:
通过Leak Suspects,一眼看到这20多GB内存主要是被一堆bulk线程实例占用了,每个实例则占用了接近1.5GB的内存。
进入"dominator_tree"面板,按照"Retained Heap"排序,可以看到多个bulk线程的内存占用都非常高。
将其中一个thread的引用链条展开,看看这些线程是如何Retain这么多内存的,特别注意红圈部分:
这个引用关系解读如下: