跳到主要内容

JEP 240:移除 JVM TI hprof 代理

QWen Max 中英对照

概述

从 JDK 中移除 hprof 代理。

非目标

创建 hprof 格式的堆转储文件的能力将会保留。

动机

hprof 代理的有用功能已经被更好的替代方案所取代。

堆转储 (heap=dump)

此功能已经被 JVM 中的相同功能所取代。通过使用诊断命令 GC.heap_dumpjcmd <pid> GC.heap_dump),可以要求 JVM 以 hprof 文件格式转储堆内存(此功能同样可以通过 jmap -dump 实现)。

分配分析器(堆=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 工具接口 的演示代码编写的,并不打算成为生产工具。其代码和文档中包含许多如下形式的声明:

这是 JVM TI 接口和 BCI 使用的演示代码,它不是官方产品,也不是 JDK 的正式组成部分。

描述

停止将 hprof 代理库 (libhprof.so) 作为 JDK 的一部分进行构建和发布。

将代码移到 OpenJDK 下的一个独立项目中。该代码作为 JVM TI 功能的演示仍然具有价值,但并未达到发布产品的要求。

该更改应该在相应的发行说明中进行记录。考虑到文档中已经存在大量的免责声明,用户应该不会对 hprof 的移除感到意外,但文档应更新为指向替代工具。

测试

现有的 hprof 代理测试将需要被移除。