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 \u0026lt;classname\u0026gt;\\java -agentlib:hprof=cpu=samples \u0026lt;classname\u0026gt;\\java -agentlib:hprof=cpu=times \u0026lt;classname\u0026gt;
\\
相应的功能可以通过Java性能监控工具VisualVM来实现,这是一个可视化的工具,集成了多个命令行JDK工具和轻量级profiling功能。与HPROF不同,VisualVM能够用在生产以及开发环境中,并且提供了额外的特性,如生成线程(和堆)dump、查看heap dump、本地和远程的Java应用监控以及离线性能分析等等。
\\
HPROF也能通过如下的命令生成heap dump:
\\
java -agentlib:hprof=heap=dump \u0026lt;classname\u0026gt;
\\
按照JEP 240,这个功能将会被JVM中相同的功能所取代,这是通过使用像“jcmd”和“jmap”这样的命令行工具做到的,如下所示:
\\
jcmd GC.heap_dump filename=\u0026lt;filename\u0026gt;
\\
或者
\\
jmap [option] \u0026lt;pid\u0026gt;\\where \u0026lt;option\u0026gt;:\\-dump:\u0026lt;dump-options\u0026gt; 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=\u0026lt;file\u0026gt; dump heap to \u0026lt;file\u0026gt;\\Example: jmap -dump:live,format=b,file=heap.bin \u0026lt;pid\u0026gt;
\\
按照“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
OpenJDK 9:将会移除HPROF和jhat相关推荐
- 红帽高级总监谈OpenJDK的未来:Java的未来从未如此光明
随着Java 11的发布,Java最终完成了到OpenJDK一等项目的过渡.使用专有OracleJDK二进制文件的日子已经结束了.对Java开放性和免费的关注自然而然将Oracle以外的公司的贡献带入 ...
- jdk 9和jdk8_JDK 9是某些功能的终结
jdk 9和jdk8 几天前宣布JDK 9是Feature Complete! 进行切割的许多"功能"是附加功能,但有些是移除功能. 这篇文章介绍了一些从OpenJDK和/或Ora ...
- JDK 9是某些功能的终结
几天前宣布JDK 9是Feature Complete! 进行剪切的许多"功能"都是添加项,但有些是删除项. 这篇文章介绍了从OpenJDK和/或Oracle的JDK Java 9 ...
- 【面试题001】最强java八股文
一.基础篇 网络基础 TCP三次握手 1.OSI与TCP/IP 模型 2.常见网络服务分层 3.TCP与UDP区别及场景 4.TCP滑动窗口,拥塞控制 5.TCP粘包原因和解决方法 6.TCP.UDP ...
- java性能监视_Java 9和应用程序性能监视的激动人心之处
java性能监视 通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序. 开始免费试用! 在当今的现代计算时代,软件创新的不断增强使我们更接近软件革命 ...
- Java 9和应用程序性能监视的激动人心之处
通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序. 开始免费试用! 在当今的现代计算时代,软件创新的不断增强使我们更接近软件革命的时代. 也许在遥 ...
- visualvm远程监控jvm_大型企业JVM实战:优化及面试热点分析
本次课程的笔记非常多,而且内容已经整理了好几个小时了,接着下来内容也会更多,也是大型企业JVM性能调优实战的最后一节,希望对你有帮助! 04:JVM性能监控与故障处理工具 大型企业JVM性能调优实战之 ...
- 马士兵—JVM—内存溢出—2.arthas阿里线上Java诊断工具
参考文档 阿里官方文档 https://arthas.aliyun.com/doc/en/quick-start.html 使用方法 1. 生成dump文件. heapdump /root/1.hpr ...
- Java源码详解五:ArrayList源码分析--openjdk java 11源码
文章目录 注释 类的继承与实现 构造函数 add操作 扩容函数 remove函数 subList函数 总结 本系列是Java详解,专栏地址:Java源码分析 ArrayList 官方文档:ArrayL ...
最新文章
- Swift3.0语言教程使用占位符格式创建和初始化字符串
- HDU5977 Garden of Eden 【FMT】【树形DP】
- Java文件路径(getResource)
- 弹性布局----Flex
- 华为云TechWave全球技术峰会,看云基础设施全新打开方式
- MySQL Left Join,Right Join
- 用得上的商学课-老路
- Layui treeTable相关
- OpenCV实战案例——车道线识别
- matlab 仿真短路故障设置,基于MatlabSimulink的电力系统故障仿真与
- Advanced Installer Architect创作工具
- Object Detection in 20 Years: A Survey 20年间的目标检测:综述
- 远程控制PLC实际案例——西门子SIMATIC S7-1200
- keydown、input、keyup
- firewall-cmd --permanent --get-zone-of-interface=ens33显示no zone
- [程序人生] --- 永远的87版--电视连续剧《红楼梦》音乐欣赏
- 探索ESP8285(2)搭建Windows版MQTT服务器
- 页面上.woff加载不出来解决办法
- PHPChina中的Yii2与Discuz会员打通(单点登录)
- 群晖服务器删除的文件都在回收站吗,电脑快速清空回收站之后,文件要如何恢复?...
热门文章
- 在服务器上处理gis文件,云服务器处理gis
- 神策数据:游戏企业如何做产品 A/B 测试?三大案例一次搞懂
- 驱动利器:数据驱动下的产品决策(上)
- Perhaps you are running on a JRE rather than a JDK?
- 设计模式 分类和原则
- 静态自动检查代码缺陷与隐患
- Quartz总结(一):Quartz集成Spring的2个方法
- 文本挖掘之文本相似度判定
- How to change in the Cocos2d-x project from landscape to portrait both in iOS and Android
- CPU和GPU的区别