Java 堆转储如何收集数据

Java 堆转储如何收集数据,java,jvm,heap,heap-memory,heap-dump,Java,Jvm,Heap,Heap Memory,Heap Dump,我知道有很多方法可以获取Java进程的堆转储。但我想知道这些数据是如何收集的 换句话说,当转储被触发时,JVM中的哪个组件提供了这个堆数据。一般来说,像“jmap”这样的工具会与不属于Java公共API的组件进行对话:sun.JVM.hotspot.包中的内容 如果“jmap”正在转储连接的JVM,它将通过JVMTI与JVM的调试代理进行交互 在其他情况下,“jmap”使用sun.jvm.hotspot.*中的各种类从jvm进程地址空间或核心转储中提取信息 如果您想了解详细信息,请下载Ope

我知道有很多方法可以获取Java进程的堆转储。但我想知道这些数据是如何收集的


换句话说,当转储被触发时,JVM中的哪个组件提供了这个堆数据。

一般来说,像“jmap”这样的工具会与不属于Java公共API的组件进行对话:
sun.JVM.hotspot.
包中的内容

  • 如果“jmap”正在转储连接的JVM,它将通过JVMTI与JVM的调试代理进行交互

  • 在其他情况下,“jmap”使用
    sun.jvm.hotspot.*
    中的各种类从jvm进程地址空间或核心转储中提取信息

如果您想了解详细信息,请下载OpenJDK源代码(选择任意版本),找到
JMap.java
文件,然后开始阅读