我正面临内存泄漏。因此,我为我的应用程序捕获了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;
}
答案 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”部分,那就太棒了。