jhsdb:JDK 9的新工具
我喜欢在分析性能和其他基于Java的应用程序的其他问题的早期步骤中使用JDK随附的命令行工具,并在诸如jcmd , jps , jstat , jinfo , jhat和jmap , jrunscript , jstack之类的 工具上进行 博客撰写和jdeps 。 JDK 9带来了新的命令行工具与具体涉及到新的JDK 9的功能,如模块(多个工具JLINK和JMOD )和增强弃用( jdeprscan )。 在本文中,我将重点介绍JDK 9随附的用于处理性能和可维护性问题的新命令行工具: jhsdb 。
jhsdb工具在其Oracle JDK 9 Documentation Early Access页面上进行了描述 ,“您可以使用jhsdb工具将其附加到Java进程或启动事后调试器来分析崩溃的Java虚拟机(JVM)的核心转储内容。 )。” 该工具带有几个“模式”,并且这些模式中的几个在名称和功能上与以前的JDK发行版中可用的各个命令行工具相对应。 jhsdb
工具不仅提供包含多个其他工具功能的单个工具,而且还提供应用这些不同功能的统一方法。 例如,用于获取每个“模式”的帮助的jhsdb
命令行语法是相同的。
jhsdb
工具可以通过其进程标识符(PID)附加并应用于正在运行的JVM(包括正在挂起的JVM),类似于其他几种工具(包括jcmd
)的工作方式。 如果提供了核心文件和可执行文件,则jhsdb
工具还可用于分析与崩溃的JVM相关的核心信息。 作为一致性的一个例子jhsdb
提供,其所有的模式支持“共同选项” --pid
(指定目标JVM的进程ID), --exe
(指定的目标可执行), --core
(指定目标核心转储文件)和--help
(显示特定于每种模式的选项)。
下一系列快照展示了--help
选项与主jhsdb
命令以及jhsdb
的几种“模式”中的每一个的jhsdb
。 一个观察可以做出的是,常用的选项--pid
, --core
和--exe
由所有模式中提供。 由此可以明显看出,每种模式所支持的特定功能都是那些“通用”选项以外的功能。
jhsdb“ jstack”模式
jhsdb
模式jstack
的--help
具有两个特定的功能选项:-- --locks
和--mixed
。 以下两个屏幕快照演示了这些内容。
刚刚显示的屏幕快照表明jhsdb
工具的jstack
模式为我们提供了死锁检测详细信息,有关线程锁的信息以及本机框架和Java框架的概述。
jhsdb“ jmap”模式
jhsdb
模式jmap
的--help
显示了该模式支持的几个功能。 当仅使用--pid
或仅使用--exe
/ --core
组合执行jhsdb jmap
, 输出类似于 Linux pmap命令提供的输出 。
正如人们所期望的, jhsdb
的jmap
模式提供的功能类似于单独但名称相似的jmap命令提供的功能。 这些包括堆转储( --heap
),类直方图( --histo
),类加载器统计( --clstats
),和释放信息( --finalizerinfo
)和在以下四个屏幕快照证明。
jhsdb“ jinfo”模式
不足为奇的是, jinfo
所述的模式jhsdb
命令提供了与该重叠通过所提供的功能性金佛山命令 。 具体而言, jhsdb
的jinfo
模式允许查看目标JVM的标志和系统属性 。
jhsdb jinfo
使用三个主要选项:-- --flags
查看JVM标志,-- --sysprops
查看系统属性,或者no参数查看标志和系统属性。 接下来的两个屏幕快照演示了jhsdb jinfo --flags
和jhsdb jinfo --sysprops
。 不带任何参数运行jhsdb jinfo
先显示系统属性,然后显示标志,但此处未显示。
jhsdb“ jsnap”模式
jhsdb
模式jsnap
提供对内部类sun.jvm.hotspot.tools.JSnap先前提供的信息的访问,该类先前在lib/sa-jdi.jar
可用,并且已添加到 JDK 9的jhdsdb中。有两个选项根据是否提供特定于模式的自变量或是否提供--all
特定于模式的自变量从jhsdb jsnap
输出结果。 接下来的两个屏幕快照演示了这两个选项。
这些屏幕快照表明,没有特定于模式的选项的jhsdb jsnap
列出诸如与线程和类加载/卸载有关的事件以及核心JVM属性之类的信息。 添加--all
选项列出了这些相同的属性,但此外还添加了更多的属性,并且根据文档 ,“打印所有性能计数器” 。
顺便说一下,Marcus Hirt的《使用JVM性能计数器》提供了有趣的外观,介绍如何应用JMX和自定义MBean来实现“类似于JRockit中可用的PerformanceCounters MBean”的工具。 我相信jhsdb jsnap --all
带来了在HotSpot中查看相同类型信息的简单功能,就像Hirt所说的在jrcmd -l
中使用jrcmd -l
。
jhsdb调试模式
三种jhsdb
模式hsdb
(用于交互式调试的图形用户界面), clhsdb
(用于交互式调试的命令行界面)和debugd
调试(远程调试服务器)与调试操作相关。 在以后的文章中,我可能会仔细研究这些模式,但是现在,我仅显示一些屏幕快照,这些快照演示了使用jhsdb hsdb
的图形交互。 GUI从jhsdb hsdb --pid <pid>
启动,此处显示的大多数选项都是通过选择“工具”下的特定菜单选项来运行的。
正如在HotSpot的“隐藏的宝藏 ”一文中可以看到的那样,可维护性调试器GUI在JDK 9和jhsdb
之前就已经可用,但是本文还显示了在JDK 9引入jhsdb
之前查找和启动该工具要困难jhsdb
。
jhsdb
与jcmd
以及与其他命令行JDK工具的关系
我在博客文章jcmd中总结了通用工具jcmd
与其他JDK提供的命令行工具的关系:一个JDK命令行工具可以全部统治它们 。 我在这里修改该表以将jhsdb
添加到组合中。
功能性 | jhsdb | jcmd | 类似工具 |
---|---|---|---|
列出Java进程 | 不适用1 |
jcmd
|
jps -lm
|
堆转储 |
jhsdb jmap --binaryheap
|
jcmd <pid> GC.heap_dump
|
jmap -dump <pid>
|
堆使用直方图 |
jhsdb jmap --histo
|
jcmd <pid> GC.class_histogram
|
jmap -histo <pid>
|
线程转储 |
jhsdb jstack --locks (锁定线程框架的子集) |
jcmd <pid> Thread.print
|
jstack <pid>
|
列出系统属性 |
jhsdb jinfo --sysprops
|
jcmd <pid> VM.system_properties
|
jinfo -sysprops <pid>
|
列出VM标志 |
jhsdb jinfo --flags
|
jcmd <pid> VM.flags
|
jinfo -flags <pid>
|
1您可以使用jcmd
或jps -lm
标识PID,如果与正在运行的JVM jcmd
,则jhsdb
, jcmd
和许多其他工具将在该PID上起作用。 我在这篇文章中使用jcmd
来标识PID,但是当前的jhsdb文档演示了使用jps
来获取JVM PID。
jhsdb
工具是主要是命令行工具,也具有可选的交互式GUI,该GUI可支持报告挂起或崩溃的JVM的许多通常需要的属性。 它提供了跨其模式的一致界面,并且命令行交互允许交互式帮助请求,因此在应用该工具之前必须了解或记住很少的语法。 如果可以记住“ jhsdb
”,则可以有效地开始使用该工具。 jhsdb
工具是JDK 9的新增功能,但将功能集成到一个工具中,该工具以前可以从几种不同的工具中获得。
翻译自: https://www.javacodegeeks.com/2017/06/jhsdb-new-tool-jdk-9.html
jhsdb:JDK 9的新工具相关推荐
- 常用jdk的命令行工具:_jhsdb:JDK 9的新工具
常用jdk的命令行工具: 我喜欢在分析性能和基于Java的应用程序的其他问题的早期步骤中使用JDK随附的命令行工具,并在诸如jcmd , jps , jstat , jinfo , jhat和jmap ...
- 各个JDK版本的新特性
一.各个JDK版本的新特性 (1)JDK 5 : 1 . 自动装箱 2 . 泛型 3 . 动态注释 4 . 枚举 5 . 可变长参数 6 . 遍历循环 7 . 改进了 Java 的内存模型 8 . 提 ...
- 新工具一键安装Java环境!微软又双叒叕造福开发者
乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软又出一个新工具,正在以实际行动征服开发者的心. 在Windows平台上,只需要下载一个安装包,就能够安装Java开发环境了. 之前,因 ...
- JDK 5 ~ 10 新特性倾情整理
转载自 JDK 5 ~ 10 新特性倾情整理 最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了. 为了大家对 ...
- Java 近闻:JDK 20、新的 JEP 草案、JobRunr 6.0、GraalVM 22.3.1
来源|InfoQ.作者 | Michael Redlich 译者 | 明知山.策划 | 丁晓昀 OpenJDK Oracle Java 语言和工具团队主要成员 Angelos Bimpoudis更新 ...
- java一键安装_新工具一键安装Java环境!微软又双叒叕造福开发者
原标题:新工具一键安装Java环境!微软又双叒叕造福开发者 微软又出一个新工具,正在以实际行动征服开发者的心. 在Windows平台上,只需要下载一个安装包,就能够安装Java开发环境了. 之前,因为 ...
- JDK各版本新特性(更新到Java20)
Hello,I'm Shendi 每当Java出新版本我会第一时间更新 目录 各版本JDK下载 JDK 1.0 1996-01-23 Oak(橡树) JDK 1.1 1997-02-19 JDK 1. ...
- 阿里发布新工具,直接帮你改代码!网友:工作量又减轻了~
欢迎关注方志朋的博客,回复"666"获面试宝典 来自:掘金,作者:阿里妈妈前端快爆 链接:https://juejin.cn/post/6977259197566517284 Vu ...
- 方法革新:8个宏基因组分析新工具 | 热心肠日报
本文转载自热心肠研究院,原文链接:https://mp.weixin.qq.com/s/ZJRtnm0j3gJupXsXzB5VUw 今天是第1766期日报. Nature子刊:教你使用 CAMI 基 ...
最新文章
- 区别于2.4g 4.33的780m无线模块
- AngularJs学习笔记--unit-testing
- php mysql通用类_PHP连接MYSQL数据库通用类_PHP教程
- springmvc与mybatis整合之实现商品列表
- 地震勘探英文专业文章中的经典句子(1)
- Netflix的Hystrix使用教程
- 第八届蓝桥杯第八题日期问题
- linux 欢迎信息
- 趣学python编程教孩子学编程_趣学Python——教孩子学编程
- 视频捕获增加color space converter + Transform Filter
- 中兴网络机顶盒-ZXV10 B860AV1.1-t装第三方软件实现直播
- 《教父II:西西里人》 shbp--3
- web前端学习之———互联网与HTML篇
- 关于高通CAMX架构下的AE调试的总结
- js PhotoSwipe库开源的手机版相册产品的Code.PhotoSwipe.attach方法使用
- 【入门AUTOSAR网络管理测试】RMS-NOS状态转换
- 云计算基础知识:何为混合云?
- 美年旅游_自由行_新增自由行
- 解决easyExcel读取EXCEL用String去接收数字,出现小数点BUG
- 浅谈AI与5G的结合场景
热门文章
- Safari浏览器不支持……
- 红歌合唱之团结就是力量
- mvc.net分页查询案例——PagedList
- 第11步 git推送失败 用户模块开发
- ping 命令使用代理_网络检测知识篇:ping命令使用知识,你知道几点?
- 转:微服务架构:BFF和网关是如何演化出来的?(这篇文章相当棒)
- 一文理类加载相关知识:类加载器、双亲委派、SPI
- go比java快多少_Java 11快多少?
- jpa避免n+1_JPA技巧:避免N + 1选择问题
- lombok和maven_Lombok,AutoValue和Immutables,或如何编写更少,更好的代码返回