Skip to content

JEP 240: Remove the JVM TI hprof Agent | 移除 JVM TI hprof 代理

摘要

从 JDK 中删除 hprof 代理。

非目标

仍然可以使用 hprof 格式创建堆转储的能力。

动机

hprof 代理的有用功能已被更好的替代品取代。

堆转储(heap=dump)

这个功能已被 JVM 中的相同功能取代。使用诊断命令 GC.heap_dumpjcmd <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 代理测试将需要被移除。