Получить статические поля класса в дамп кучи в OQL
У меня есть дамп кучи, и я использую Eclipse MAT, хотя я предполагаю, что это должно работать через visualvm или любой другой OQL-клиент.
Мы можем выбрать поля всех экземпляров класса, выполнив что-то вроде
select s.field1, s.field2 from org.me.MyClass
... но это ограничено переменными-членами и типами с экземплярами.
Как выбрать статические поля класса без экземпляров?
Это в некоторой степени связано с другим вопросом.
2 ответа
Решение
Для доступа к статическому полю 'props' класса java.lang.System вы можете использовать (в VisualVM)
select heap.findClass("java.lang.System").statics.props
select heap.findClass("java.lang.System").props
Это немного хакерски, но работает в MAT:
SELECT c.SIZE
FROM INSTANCEOF java.lang.Class c
WHERE c.@displayName.contains("class java.lang.Integer ")