在OQL的堆转储中获取类的静态字段

Joe*_*ney 5 java eclipse heap oql eclipse-mat

我有一个堆转储,并且正在使用Eclipse MAT,尽管我认为这应该通过visualvm或任何OQL客户端来工作。

我们可以通过执行以下操作来选择类的所有实例的字段

select s.field1, s.field2 from org.me.MyClass
Run Code Online (Sandbox Code Playgroud)

...但这仅限于成员变量和带有实例的类型。

如何选择没有实例的类的静态字段?

这与另一个问题有关

kgi*_*ibm 6

这有点hackish,但适用于MAT:

SELECT c.SIZE
FROM INSTANCEOF java.lang.Class c
WHERE c.@displayName.contains("class java.lang.Integer ")
Run Code Online (Sandbox Code Playgroud)


Tom*_*rka 5

要访问类java.lang.System的静态字段“ props”,可以使用(在VisualVM中)

select heap.findClass("java.lang.System").statics.props
select heap.findClass("java.lang.System").props
Run Code Online (Sandbox Code Playgroud)

  • 尽管问题中没有要求这一点,但值得注意的是,这不会在 Eclipse MAT OQL 中执行。 (2认同)