写点什么

OpenJDK 9:将会移除 HPROF 和 jhat

2015 年 12 月 18 日

OpenJDK 正在从 JDK 中废弃 HPROF agent 并移除“jhat”工具。这是OpenJDK 9 的Java SE 平台借助Jigsaw 实现模块化的结果,为了准备模块化,起草了多项提议(JEP),并且其中有很多都已经接近完成了。

让我们近距离地了解一下这两个与模块化JDK 相关的JEP,它们的目标就在于移除HPROF agent 和“jhat”工具:

移除JVM Tool Interface HPROF Agent

HPROF 是一个 profiler agent,它使用 JVM Tool Interface(JVMTI)来提供工具接口,并且用到了 Bytecode Instrumentation 。HPROF agent 能够将profiling 信息写到文件中,这些信息包括基于allocation sites 的堆使用情况、堆dump、CPU 使用情况、争用监控等,它还可以将这些信息通过socket 进行发送。HPROF无意成为生产型的工具,它能够被下文所述的各种其他可选方案所替代:

HPROF 能够获取 heap allocation profile、CPU 使用的采样数据以及 times profile,按照其最简单的形式分别如下面的命令所示:

复制代码
java -agentlib:hprof=heap=sites <classname>
java -agentlib:hprof=cpu=samples <classname>
java -agentlib:hprof=cpu=times <classname>

相应的功能可以通过 Java 性能监控工具 VisualVM 来实现,这是一个可视化的工具,集成了多个命令行JDK 工具和轻量级profiling 功能。与HPROF 不同,VisualVM 能够用在生产以及开发环境中,并且提供了额外的特性,如生成线程(和堆)dump、查看heap dump、本地和远程的Java 应用监控以及离线性能分析等等。

HPROF 也能通过如下的命令生成 heap dump:

java -agentlib:hprof=heap=dump <classname>按照 JEP 240 ,这个功能将会被 JVM 中相同的功能所取代,这是通过使用像“jcmd”和“jmap”这样的命令行工具做到的,如下所示:

jcmd GC.heap_dump filename=<filename>或者

复制代码
jmap [option] <pid>
where <option>:
-dump:<dump-options> to dump java heap in hprof binary format
dump-options:
live dump only live objects; if not specified,
all objects in the heap are dumped.
format=b binary format
file=<file> dump heap to <file>
Example: jmap -dump:live,format=b,file=heap.bin <pid>

按照“jcmd”工具的文档,如果要创建堆(hprof)dump 的话,“jcmd”是推荐使用的工具。

移除“jhat”工具

“jhat”是一个堆分析工具,它会解析Java heap dump 并且能够在Web 浏览器中查看解析过的heap dump。借助“jhat”,用户可以执行一些标准的查询或使用 OQL 接口编写自定义的查询。

按照JEP 241, jhat 是一个实验性的、不再支持的过时工具。尽管JEP 并没有指定特定的替代工具,但是InfoQ 还是再次为用户推荐 Java VisualVM ,用它来实现heap dump 的创建、可视化和分析。VisualVM 还允许用户执行自定义的查询或使用标准的查询。

在未来的报道中,我们将会继续讨论上述的使用场景。

查看英文原文: OpenJDK 9: Life Without HPROF and jhat

2015 年 12 月 18 日 18:002292

评论

发布
暂无评论
发现更多内容

filecoin云算力软件开发|filecoin云算力APP系统开发

开發I852946OIIO

系统开发

经典排序算法分析

roseduan

算法 排序算法

Wireshark 数据包分析学习笔记Day15

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

聊聊 Python 自动化脚本部署服务器全流程(详细)

星安果

Python 自动化 服务器 部署

github 这样用,事半功倍

hepingfly

Java GitHub 搜索 使用技巧

B+树索引优点

一个大红包

3月日更

翻译:《实用的Python编程》06_04_More_generators

codists

Python

图解垃圾算法,No,捡垃圾算法

叫练

GC算法 引用计数法 标记清除法

epoll源码分析以及在Redis中的实现

Linux服务器开发

redis 后端开发 epoll web服务器 Linux服务器开发

filecoin挖矿软件开发|filecoin挖矿APP系统开发

开發I852946OIIO

系统开发

filecoin矿机系统开发|filecoin矿机软件APP开发

开發I852946OIIO

系统开发

趋势预测:2021年五大流行的编程语言

薇薇

Java c php JavaScript Python PEP

炸裂,IBM系统架构师居然把自己15年Java经验整合成一本小说?

Java架构师迁哥

寻找被遗忘的勇气(十八)

Changing Lin

3月日更

打卡学习VBA和PYTHON week01

小怪兽

IT蜗壳教学

"无密码时代"已经来临!

龙归科技

身份认证

uni-app跨端开发H5、小程序、IOS、Android(二):开发工具HBuilderX使用技巧

黑马腾云

微信小程序 uni-app App 3月日更 Hbuilderx

繁忙的三月

IT蜗壳-Tango

3月日更 IT蜗壳教学

手机

ES_her0

28天写作 3月日更

如何评估需求优先级?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

低代码/无代码,作为IT开发界的“新英雄”它究竟有何神技?

优秀

低代码 无代码开发

收藏!这些IDE使用技巧,你都知道吗

xcbeyond

IDEA 技巧 3月日更

前端开发: 路由跳转页面详解

三掌柜

vue.js 前端 3月日更

容器 & 服务:Kubernetes扩容

程序员架构进阶

Docker 容器 kubernete 28天写作 3月日更

算法攻关-最长公共子序列_1143

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 最长公共子序列

科技进化的终点,与荣耀全场景的起点

脑极体

DCache 分布式存储系统|Set, ZSet 缓存模块的创建与使用

TARS基金会

nosql 缓存 分布式 MySQL 高可用 TARS

Github封神!2021最新阿里巴巴Java面试权威指南(华山版)震撼开源!

Java王路飞

Java 程序员 架构 面试 分布式

JDBC—往MySQL中写入Blob数据时,出现错误:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5724349 > 1048576)

打工人!

Java MySQL JDBC Blob

php 再上热搜!swoole 创始人投出反对票,质疑 php 协程最新提案

薇薇

php 编程 新特性 php扩展

mybatis实现分页的几种方法

xiezhr

mybatis 分页 mybatis分页

OpenJDK 9:将会移除HPROF和jhat-InfoQ