有没有办法使用某种脚本轻松到达链接堆栈的底部?
您可以做的是使用jhat
也Object Query Language
称为OOL
(一种类似 SQL 的查询语言来查询堆转储)来对您的堆转储执行查询。
1.启动jhat
jhat <path-to-my-heap-dump-file>
这将默认在端口上启动一个 Web 服务器7000
2.进入OOL
页面
- 转到http://localhost:7000/
- 点击
Execute Object Query Language (OQL) query
的Other Queries
部分
3.执行我的查询
假设您要获取Obj
其字段next
为的实例,null
则要启动的查询将是以下类型:
select o from my.package.Obj o where o.next == null
然后,您将找到my.package.Obj
字段next
为的类的所有实例null
。只需单击您选择的实例即可获取有关它们的更深入信息。
对于更复杂的查询,您可以参考http://localhost:7000/oqlhelp/提供的文档。
做同样事情的另一种方法是使用jvisualvm
比jhat
.
- 开始
jvisualvm
- 去
File/Load...
- 选择您的堆转储文件然后单击
Open
,它将打开您的堆转储
- 然后点击
OQL Console
- 在
Query Editor
's 部分中输入您的查询并单击Execute
- 然后,您的结果将出现在
Query Results
' 部分中,然后您将能够更深入地了解您选择的实例