jvm 堆转储如何收集数据

7rtdyuoh  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(126)

我知道有很多方法可以对一个Java进程进行堆转储,但是我想知道这些数据是如何收集的。
换句话说,当触发转储时,JVM中的哪个组件提供此堆数据。

aoyhnmkz

aoyhnmkz1#

一般来说,像“jmap”这样的工具与不属于Java公共API的组件进行通信:sun.jvm.hotspot.*软件包中的内容。

  • 如果“jmap”正在转储连接的JVM,它将通过JVMTI与JVM的调试代理进行交互。
  • 在其他情况下,“jmap”使用sun.jvm.hotspot.*中的各种类从JVM进程地址空间或核心转储中提取信息。

如果您想了解这些血淋淋的细节,请下载OpenJDK源代码(选择任意版本),找到JMap.java文件,然后开始阅读。

相关问题