跳到主要内容

JEP 240:删除 JVM TI hprof 代理

概括

hprof从 JDK 中删除代理。

非目标

以该格式创建堆转储的能力hprof将保留。

动机

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

堆转储(heap=dump)

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

分配分析器(堆=站点)

Java VisualVM 工具提供相同的功能,许多第三方分析器也提供相同的功能。

CPU 分析器(cpu=样本,cpu=时间)

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代理测试需要删除。