我正在使用内存分析器工具分析堆转储。从支配树中我选择了具有最高保留内存的类(大约47%)。没有参考的选定对象,我看到有一个超过1GB的保留内存的哈希映射条目。我看到像这样的键和值对
Class Name | Shallow Heap | Retained Heap
---------------------------------------------------------------------------------------
key java.lang.String @ 0x717278cd8 MapAllProfilesOutput| 32 | 88
---------------------------------------------------------------------------------------
Class Name | Shallow Heap | Retained Heap
------------------------------------------------------------------------------------------------
value com.tibco.xml.xdata.xpath.Variable @ | 24 | 1,194,483,312
|- <class> class com.tibco.xml.xdata.xpath.Variable | 16 | 2,296
|- mValue com.tibco.xml.datamodel.nodes.Document | 48 | 1,194,483,288
------------------------------------------------------------------------------------------------
有没有办法可以获得价值的内容?我正在阅读一些关于使用OQL进行散列的内容,所以想检查一下这种可能性。我的堆转储大约是4.5 GB。
答案 0 :(得分:0)
我建议您使用Eclipse Memory Analyzer。这为您提供了一个图形概览,您可以在其中轻松深入查看相关地图。也就是说,如果它的大小真的是1.2GB ......那就是大量钻探!
如果你真的想使用OQL,那么online help是一个很好的资源。使用OQL,如果您选择的值返回一个字符串,它将被打印,例如:
select file.path.toString() from java.io.File file
将打印转储中所有File对象的路径。您可以使用它来打印文档的重要细节,这将有助于缩小您正在处理的文档。