Синтаксис OQL для ссылки на объект?

Я нахожу необходимые объекты в visualvm v1.3.8:

filter(heap.objects("java.lang.String"), "/hibernate\\.ejb\\.naming/(it.toString())")

они показаны как:

java.lang.String#32669 - hibernate.ejb.naming_strategy_delegator
java.lang.String#34021 - hibernate.ejb.naming_strategy
java.lang.String#39522 - hibernate.ejb.naming_strategy_delegator

Как я могу сослаться на отдельный объект из набора результатов в синтаксисе OQL? Мои попытки терпят неудачу:

select heap.findObject("java.lang.String#34021")
select heap.findObject("#34021")
select heap.findObject("34021")

person gavenkoa    schedule 24.12.2015    source источник


Ответы (1)


Я могу использовать трюк с objectid(...):

map(filter(heap.objects("java.lang.String"),
           "/hibernate\\.ejb\\.naming/(it.toString())"),
    "{id: objectid(it), ref: it}")

а затем повторно используйте id с синтаксисом, подобным heap.findObject(4077522088).

person gavenkoa    schedule 24.12.2015