如何使用Eclipse Memory Analyzer Tool(MAT)分析hashmap

时间:2014-03-03 04:12:09

标签: java android eclipse memory android-memory

我正面临内存泄漏。因此,我为我的应用程序捕获了heap dump,并尝试使用内存分析器工具(MAT)对其进行分析。我点击了hprof file菜单中的堆转储概览选项。然后,点击Class Histogram。它向我展示了按类分组的所有对象列表,它们占据了最大值。其中一个是我的cutom hashmap。现在,我想分析这个hashmap的条目。

知道我怎么能这样做吗?如果我点击自定义哈希地图名称,然后点击List Objects->with incoming references,它只显示hashmap&中所有对象的列表。创建这些对象的层次结构,& 不是hashmap条目的实际键值对

P.S。我的自定义Hashmap:

private Hashmap<Integer, TextCache> mCache;

class TextCache{
    Bitmap bitmap;
    int left;
    int right;
    int keyCode;
}

1 个答案:

答案 0 :(得分:1)

要回答我自己的问题,我试图从Java/Debug Perspective查看hprof文件。当我切换到Memory Analysis透视图时,我可以在Inspector - &gt;中查看所有对象的详细信息,包括散列图条目的键值对。向左Attributes窗口。

编辑:hashmap条目的“key”属性仍然不可见。只有我的自定义hashmap条目对象的属性才是可见的,它是“值”部分。所以,我做的是,为了测试目的,我在自定义hashmap条目对象中放置了key属性(这是一个整数),以便能够从Inspector - &gt;中查看它。从Attributes角度来看Memory Analysis

class TextCache{
    Bitmap bitmap;
    int left;
    int right;
    int keyCode;
    int key; // this is actually the key used to insert objects of TextCache into the hashmap.
}

如果有人发现,如何直接查看hprof文件中的“key”部分,那就太棒了。