我希望能够在受监视的应用程序内以编程方式获取与 jmap -histo 命令相当的输出。我了解到可以通过HotSpot诊断bean来触发堆转储,但我不知道如何获取直方图数据。请问这是否可能?
jmap -histo
这可能不是最好的示例/代码,但请查看此处
(我认为它只适用于Hotspot JVM)
sun.tools.attach.HotSpotVirtualMachine.heapHisto("-all")
VirtualMachine.attach($myOwnPID)
jmap
sun.tools.attach.HotSpotVirtualMachine.heapHisto("-all")
(当然是通过反射),但你必须先调用VirtualMachine.attach($myOwnPID)
。不确定这是否比直接运行jmap
可执行文件更好。 - Jesse Glick