3

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")
4

1 回答 1

1

我可以使用技巧objectid(...)

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

然后用类似的语法重用id 。heap.findObject(4077522088)

于 2015-12-24T20:04:02.593 回答