0

我正在使用内存分析器工具分析堆转储。从支配树中,我选择了保留内存最高的类(大约 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。

4

1 回答 1

0

我建议你看看使用Eclipse Memory Analyzer。这为您提供了一个图形概览,您可以在其中轻松深入了解相关地图。也就是说,如果它真的是 1.2GB 大小……那就需要大量的钻取!

如果您真的想使用 OQL,那么在线帮助是一个很好的资源。使用 OQL,如果您选择的值返回一个字符串,它将被打印出来,例如:

select file.path.toString() from java.io.File file

将打印转储中所有 File 对象的路径。您可以使用它来打印文档的重要细节,这将有助于缩小您正在处理的文档的范围。

于 2013-10-18T21:35:37.477 回答