JEP 240: Remove the JVM TI hprof Agent | 移除 JVM TI hprof 代理
摘要
从 JDK 中删除 hprof
代理。
非目标
仍然可以使用 hprof
格式创建堆转储的能力。
动机
hprof
代理的有用功能已被更好的替代品取代。
堆转储(heap=dump)
这个功能已被 JVM 中的相同功能取代。使用诊断命令 GC.heap_dump
( jcmd <pid> GC.heap_dump
),可以请求 JVM 以 hprof
文件格式转储堆(也可以通过 jmap -dump
进行操作)。
分配分析器(heap=sites)
Java VisualVM 工具提供了相同的功能,还有一些第三方分析器也提供了类似的功能。
CPU 分析器(cpu=samples,cpu=times)
CPU 分析器存在一些缺点,详细描述在 http://www.brendangregg.com/blog/2014-06-09/java-cpu-sampling-using-hprof.html 等地方。有其他提供更好功能且问题较少的工具。其中包括与 JDK 捆绑的 Java VisualVM 和 Java Flight Recorder,以及一些第三方分析器。
演示代码
hprof
代理是为 JVM Tool Interface 编写的演示代码,不打算成为产品工具。代码和文档中包含许多类似以下形式的声明:
这是用于 JVM TI 接口和 BCI 使用的演示代码,不是官方产品或 JDK 的正式组成部分。
描述
停止构建和发布作为 JDK 一部分的 hprof
代理库( libhprof.so
)。
将代码移到 OpenJDK 下的一个单独项目中。该代码仍然有价值作为展示 JVM TI 功能的示例,但它无法满足发布产品的要求。
应在适当的发布说明中对此更改进行记录。考虑到文档中已经存在的广泛免责声明,用户不应对 hprof
被移除感到意外,但应更新文档以指向替代工具。
测试
现有的 hprof
代理测试将需要被移除。