Eclipse 内存分析器中的 OQL - 如何显示数组/ArrayList 内容

Dik*_*kla 8 java eclipse oql

我有一个使用 Eclipse Memory Analyzer 打开的转储。

我想将堆的一些内容导出到一个文件中。

我感兴趣的字段之一是 anArrayList并且我找不到以将数组列表的内容作为输出返回的方式查询转储的方法:

  • 选择 ArrayList 对象本身会返回如下内容: java.util.ArrayList [id=0xf2765680]

  • 在数组列表 ( select arr.elementData...) 中选择数组会返回类似以下内容: java.lang.Object[] [id=0xf2765698;length=4]

  • 当 arrayList 不为 null 时选择toString(arr)toString(arr.elementData)返回空字符串(如果为空则为字符串null)。

真的不可能吗??

小智 7

获取元素列表

SELECT OBJECTS arr.@referenceArray FROM OBJECTS <your_array_address> arr
Run Code Online (Sandbox Code Playgroud)

重新映射数组元素列表

SELECT OBJECTS elem.<field_name> FROM OBJECTS (SELECT OBJECTS arr.@referenceArray FROM OBJECTS <your_array_address> arr) elem
Run Code Online (Sandbox Code Playgroud)

真实例子

SELECT OBJECTS elem.callable.task.task FROM OBJECTS (SELECT OBJECTS arr.@referenceArray FROM OBJECTS 0x645eb6b80 arr) elem
Run Code Online (Sandbox Code Playgroud)


Jas*_*onC 0

我今天在数组上遇到了同样的问题。我找不到使用 OQL 执行此操作的方法,但我确实找到了使用 Eclipse Memory Analyzer 本身的方法。

  1. 选择要导出的数据的父对象。您的收藏现在应该显示在屏幕左侧的“属性”选项卡中。

  2. 右键单击属性列表中的集合,然后选择复制 - 将值保存到文件复制 - 值

  3. 如果您选择将值保存到文件,请指定文件位置。集合的内容将输出到文件中。

或者,似乎有一个选项可以提取列表中的值。

  1. 右键单击列表。
  2. 选择“Java 集合 - 提取列表值”

我没有尝试过第二种选择,但我希望这对您或搜索该主题的其他人有所帮助。