最近,我一直在使用Eclipse MAT深入研究 JVM 堆转储。我喜欢它,但我似乎使用最多的一个功能是Dominator Tree。Eclipse 的示例截图:
无论如何,我发现很多时候,我通常会从查看该表并获取前几个条目中获得最大价值。因为得到这个的周转时间是:
- 创建堆转储 (
jcmd <pid> GC.heap_dump
) - 下载/拉取 heapdump 到一个位置(MAT 没有安装在我们的服务器上)
- 运行 Eclipse MAT 的
ParseHeapDump.sh
工具来构建各种树 - 打开 MAT,单击Dominator Tree图标。
- 分析
有没有办法以编程方式从正在运行的JVM中获取这些等效信息?我想gather_dominators.sh <pid>
在主机上运行某种脚本并从 JVM 获取 Top X 对象,但我不知道从哪里开始。