堆转储如何收集数据

时间:2015-12-14 09:39:09

标签: java jvm heap heap-memory heap-dump

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

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

1 个答案:

答案 0 :(得分:1)

一般来说,像" jmap"讨论不属于Java公共API的组件:sun.jvm.hotspot.*包中的内容。

  • 如果" jmap"正在转储附加的JVM,它通过JVMTI与JVM的调试代理进行交互。

  • 在其他情况下," jmap"使用JMap.java中的各种类从JVM进程地址空间或核心转储中提取信息。

如果您想了解血腥细节,请下载OpenJDK源代码(选择任何版本),找到ctypes文件,然后开始阅读。