我想在VisualVM(v1.4.4)中执行OQL查询,以检索对象的(非静态)字段名称。
OQL文档描述了
当我执行以下OQL时...
如果我尝试操作这个数组,例如访问每个字段的
OQL文档描述了
heap.findClass(className)
。这将返回一个包括fields
属性(字段名称数组)的对象。当我执行以下OQL时...
heap.findClass('java.io.ByteArrayInputStream').fields;
...它返回一个由4个字段对象(ByteArrayInputStream
有4个字段 - buf
、count
、mark
和pos
- 我假设这些是被返回的内容):
org.netbeans.lib.profiler.heap.HprofField@56de8c
org.netbeans.lib.profiler.heap.HprofField@56de95
org.netbeans.lib.profiler.heap.HprofField@56de9e
org.netbeans.lib.profiler.heap.HprofField@56dea7
如果我尝试操作这个数组,例如访问每个字段的
name
和 signature
属性(如 OQL 文档中所述),我将得不到任何结果。 我甚至无法获取数组的长度。例如:
heap.findClass('java.io.ByteArrayInputStream').fields.length;
并且:
heap.findClass('java.io.ByteArrayInputStream').fields[0];
以上两个语句均返回 <无结果>
。
我做错了什么? 可能是一些基础问题。我对JavaScript不是很熟悉 - 或者说我对VisualVM中的数据显示也不是很熟悉。