如何以编程方式获取jmap直方图?

15

我希望能够在受监视的应用程序内以编程方式获取与 jmap -histo 命令相当的输出。我了解到可以通过HotSpot诊断bean来触发堆转储,但我不知道如何获取直方图数据。请问这是否可能?

1个回答

3

这可能不是最好的示例/代码,但请查看此处

(我认为它只适用于Hotspot JVM)


谢谢提供链接。我猜这意味着没有“内部”的方法来做到这一点,你必须附加代理才能获取这些信息? - nicoulaj
这是一种内部方式(它不执行jmap应用程序),但它不是一种独立于JVM的方式,因为使用了非标准化的类/方法,甚至在其他JVM实现中也不存在。 - MRalwasser
1
它不是内部的,而是外部附加代理。 - nicoulaj
看起来它最终会调用例如 sun.tools.attach.HotSpotVirtualMachine.heapHisto("-all")(当然是通过反射),但你必须先调用 VirtualMachine.attach($myOwnPID)。不确定这是否比直接运行 jmap 可执行文件更好。 - Jesse Glick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接