gpt4 book ai didi

java - 如何从 Java 堆转储中提取 HashMap

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:22 25 4
gpt4 key购买 nike

我有一个使用 jmap 生成的 Java 堆转储。其中包含一个 HashMap,我需要将其提取为文本格式(CSV 就可以了)。 HashMap 相当大,所以我需要一个脚本化的解决方案。

使用 JVisualVM 我可以找到 HashMap。但是,似乎没有办法导出其数据。经过一些实验,我确实解决了这个 OQL 查询:

select map(filter(heap.findObject("0x12345678"), 'it != null'), function(it) { return {"id": it.key.value, "value": it.value.value}; })

其中0x12345678是HashMap中表数组的对象ID。即使这也不太有效,因为它只能找到直接附加到表的对象,而不是链接的对象。无论如何,我觉得我让这件事变得比它必须的更难 - 我以为有一个简单的方法可以做到这一点。

最佳答案

扩展 geert3 答案:

您可以使用Memory Analyzer来做到这一点。选择“dominator_tree”并搜索您的 HashMap。

选择 -> 右键单击​​ -> Java 集合 -> 哈希条目

Screenshot of Memory Analyzer

关于java - 如何从 Java 堆转储中提取 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35992182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com