OpenJDK 9:将会移除 HPROF 和 jhat

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还允许用户执行自定义的查询或使用标准的查询。

====================================分割线================================
文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-09-08 07:10:36

OpenJDK 9:将会移除 HPROF 和 jhat的相关文章

OpenJDK:构建JDK

编者注:在这一期的 开源之路 中,作者和 Cafe Au Lait 的创始人 Elliotte Rusty Harold 接管了目前的 Java SE 7 开发系列文章.因为 OpenJDK 项目 的目标和流程已经在 第一期 介绍过,所以 Elliotte 将在此教程中直接介绍 JDK 7 的实际构建. 在此之前, 如果 OpenJDK 项目有更新,我们会将其发布在每期"开源之路"的开始部分.最新的 发行版 是 b23,发行日期是 10 月 30 日.此发行版解决了一小部分缺陷和功能要

电脑中如何移除火狐Firefox浏览器中不需要的组件

  电脑中如何移除火狐Firefox浏览器中不需要的组件?我们知道在火狐Firefox浏览器中可以安装一些插件,来为浏览器增加更多功能.如果想要删除火狐浏览器中已经安装的不需要的组件,那么在电脑中具体应该如何操作呢?这时可以按照下面提供的方法步骤进行设置. 1.打开火狐Firefox浏览器,右击标题栏,勾选显示菜单栏; 2.点击菜单栏中的工具--附加组件; 3.打开附加组件管理器后,点击最左侧的组件小图标; 4.找到不需要使用的组件,点击右侧的"移除"按钮; 5.移除组件完成后,会显示

移除UTF-8文件头的BOM

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) UTF-8 BOM又叫UTF-8 签名,在UTF-8文件的头部,长度为3个字节.其实UTF-8 的BOM对UFT-8没有作用,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别.但是在Eclipse中,带有BOM的java源码生成javadoc时却会出现如下错误:(来源:http://blog.cs

在android程序中打开HPROF文件时出错

问题描述 在android程序中打开HPROF文件时出错 当我用Memory Analyzer打开HPROF文件时(由Debug.dumpHprofData创建),得到的是以下的异常: java.io.IOException: Unknown HPROF Version (JAVA PROFILE 1.0.3) at org.eclipse.mat.hprof.AbstractParser.readVersion(AbstractParser.java:124) at org.eclipse.m

jquery移除

涉及节点删除的接口jQuery划分了四个分别是detach,empty,remove,unwrap,因为使用的范围不同,所以功能有所差异,但是总的来说都是用来清理节点的. innerText是我们常用的文本清理方法,但是火狐下不兼容,不过会提供一个类似的方法叫textContent. 两者还是有一些区别的,总结如下. IE中的innerText是需要对innerHTML的值进行:  HTML转义(等同于XML转义,对<.&等转义字符进行处理):  经过HTML解释和CSS样式解释:  之后又

移除HTML标签

方法一 : 禁用HTML最简单的方法是直接禁用html标签而不用移除它们. 可以使用Replace()函数. 例如: strText = Replace(strText, "<script", "<script", 1, -1, 1) 或者直接禁用所有的html: strText = Replace(strText, "<", "<") 这样做虽然很安全,但显得不够友好.(用户提交的文本会变得难以阅读)

ASP函数:移除HTML代码

ASP移除所有HTML代码的函数 Function RemoveHTML( strText )  Dim RegEx  Set RegEx = New RegExp  RegEx.Pattern = "<[^>]*>"  RegEx.Global = True  RemoveHTML = RegEx.Replace(strText, "")  RemoveHTML = replace(RemoveHTML," ","

Javascript实例教程(12) 鼠标移过时报警

javascript|教程 利用Javascript产生鼠标移过时报警 为了产生鼠标移过时报警,首先你可以在网页的最前面添加一下JavaScirpt语句: <script language="JavaScript"> <---hide from non-JavaScript browsers function alertdave(){ window.alert("这是太平洋电脑网"); } // end hide </script> 为

Javascript实例教程(13) 鼠标移过时报警

javascript|教程 利用javascript产生鼠标移过时报警 为了产生鼠标移过时报警,首先你可以在网页的最前面添加一下JavaScirpt语句: <script language="javascript"> <---hide from non-javascript browsers function alertdave(){ window.alert("这是太平洋电脑网"); } // end hide </script> 为