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命令提供的输出 。

正如人们所期望的, jhsdbjmap模式提供的功能类似于单独但名称相似的jmap命令提供的功能。 这些包括堆转储( --heap ),类直方图( --histo ),类加载器统计( --clstats ),和释放信息( --finalizerinfo )和在以下四个屏幕快照证明。

jhsdb“ jinfo”模式

不足为奇的是, jinfo所述的模式jhsdb命令提供了与该重叠通过所提供的功能性金佛山命令 。 具体而言, jhsdbjinfo模式允许查看目标JVM的标志和系统属性 。

jhsdb jinfo使用三个主要选项:-- --flags查看JVM标志,-- --sysprops查看系统属性,或者no参数查看标志和系统属性。 接下来的两个屏幕快照演示了jhsdb jinfo --flagsjhsdb 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

jhsdbjcmd以及与其他命令行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您可以使用jcmdjps -lm标识PID,如果与正在运行的JVM jcmd ,则jhsdbjcmd和许多其他工具将在该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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

purfer序列

prufer序列求法 对于一个无根无向图我们可以应用prufer序列操作使它缩成一个序列。 具体操作 一&#xff0c;每次选出来树中编号最小的点且度数为一&#xff08;即叶子节点&#xff09; 二&#xff0c;将与被删去的点相连的节点加入prufer序列中 重复一&#xff0c;二&#xff…

oracle11g高可用,oracle11g 搭建DG环境总结

本帖最后由 zhofly 于 2016-6-24 23:19 编辑测试环境为&#xff1a;两台服务器配置一样&#xff1a;Oracle Linux Server release 6.5 X86_64, DB 11.2.0.4.0前提环境&#xff1a;一台已经安装好数据库软件并创建数据库实例的服务器另一台也就是备库&#xff0c;只安装了数据…

树的计数(prufer序列 或 purfer序列)

题解 首先我们要知道一条性质&#xff0c;prufer序列中的某个点出现次数为该点在树中度数-1 感性理解一下&#xff0c;其实按照prufer序列求法自己推一下就出来了 设题目里给的度为$d[]$ 先将所有的d-- 然后按照排列组合得出来 这是多重集排列数 首先从n-2中选择d[1]个数是$C_{…

PHP 织梦 帝国那个好,帝国、PHPCMS及织梦对比(十):推荐位功能

网站中发布的文章除了需要按时间、栏目分类、类别调用外&#xff0c;往往需要根据编辑的推荐进行不同的调用&#xff0c;那么CMS自然少不了推荐位功能。一般推荐位的设计都有首页头条、首页幻灯焦点、首页推荐、栏目页推荐、列表页推荐、内容页推荐等&#xff0c;基本可以满足站…

声明对象 创建对象_流利的对象创建

声明对象 创建对象关于此主题的文章很多&#xff08;绝大多数&#xff09;&#xff0c;但我只是想贡献我的两分钱&#xff0c;并写一篇简短的文章&#xff0c;介绍如何使用Java中的Fluent Object Creation模式或对象构建器实例化Value Objects。 值对象是由其状态&#xff08;…

shell脚本之shellcode自动提取工具

最近一直在忙着写论文。突然领导又分配任务&#xff0c;帮写个自动提取shellcode的脚本工具。因为之前&#xff0c;我们都是用objdump查看后&#xff0c;把shellcode一个个添加进去&#xff0c;很麻烦&#xff0c;害怕写错。所以说我们写这个工具还是挺有必要的。首先我们要先了…

Apache Kafka流+机器学习(Spark,TensorFlow,H2O.ai)

我于2017年5月开始在Confluent工作&#xff0c;担任技术传播者&#xff0c;专注于围绕开源框架Apache Kafka的主题。 我认为机器学习是当今最热门的流行语之一&#xff0c;因为它可以在任何行业中增加巨大的商业价值。 因此&#xff0c;您还会从我这里收到有关Apache Kafka&…

dmp文件导入11oracle数据库,如何将dmp文件导入到自己的oracle数据库中

1、首先&#xff0c;我们可以先建立自己的一个用户表空间&#xff0c;创建表空间的格式如下&#xff1a;create tablespace test(表空间的名字)datafile D:\oracle\product\10.2.0\userdata\test.dbf (这边可以写成oracle的某个路径下)size 50m (初始大小)autoextend on;(自动…

NOIP模拟测试7「方程的解·visit」

visit 由于一些不可预知的错误导致我一直WA 错误最后说 思路 方案一 假设终点在出发点右上方&#xff08;这样假设只是为了方便&#xff09; 假设向左走了a步&#xff0c;向右下了b布&#xff0c;那么相应的我们要向右走ma&#xff0c;向上nb步 总步数t 所以由多重集方案数可得…

jsf绑定bean_JSF –渴望的CDI bean

jsf绑定bean每个人都知道JSF 2中热切的托管bean。 ManagedBean具有eager属性。 如果eager true并且范围是application&#xff0c;那么必须在应用程序启动时而不是在第一次引用该bean时创建此bean。 当您想在应用程序启动期间加载应用程序范围的数据&#xff08;例如&#xff0…

红旗系统linux忘了开机密码,红旗Linux6.0中忘记了root密码

很久很久以前&#xff0c;用虚拟机安装了red flag6.0windows xp 的双系统&#xff0c;很久很久以后&#xff0c;打开虚拟机red flag系统忘记了密码&#xff1a;在网上搜了下解决办法&#xff0c;转了先&#xff0c;不知管不管用&#xff01;

在网页中的flash游戏,按方向键浏览器的滚动条会跟着滚动

今天总算把这个困扰我N久的问题给解决了&#xff0c;在我的flash游戏《牧场物语》中有方向键操作&#xff0c;但是在按上下方向键的时候浏览器右边的滚动条跟着滚动&#xff0c;也一上一下的&#xff0c;弄的我头晕&#xff0c;还让不让人活啊&#xff0c;今天终于得到答案了。…

谁最终需要Java模块?

拼图问题为1000。我作为X想要JPMS模块。 如果不是平台开发人员&#xff0c;X是什么&#xff1f; 我的回答是X是人&#xff08;减去平台开发人员&#xff0c;因为那是一个条件&#xff09; 。 我们都需要模块系统具有更安全的代码&#xff0c;从而产生更可靠的系统&#xff0c;…

linux 删除带a的文件格式,linux基础命令练习题

2、如何通过命令行重启linux操作系统&#xff1f;shutdown -r now |reboot |init 63、如何在命令行中快速删除光标前的内容&#xff1f;ctrl uctrl k (删除光标之后的内容)5、设置/test/a.txt属主有读写执行权限&#xff0c;属组&#xff0c;有读写&#xff0c;其他账户无权限…

linux安全软件 腾讯,腾讯安全团队发现一存在24年的Linux 0day高危漏洞

腾讯安全团队近日向Linux社区提交了两个Linux X.25套接字漏洞&#xff0c;该漏洞可能造成权限提升&#xff0c;攻击者利用漏洞可能控制整个系统。漏洞风险等级为高&#xff0c;漏洞影响内核版本为2.1.16&#xff5e;5.9.8的Linux系统。目前这些漏洞尚未修复&#xff0c;漏洞细节…

在Salesforce中调用外部系统所提供的的Web Service

这里需要提供外部service所对应的WSDL文件&#xff08;Salesforce只支持从本地上传&#xff09;&#xff0c;并且提供的WSDL文件有如下两点要求&#xff1a; 1&#xff09;&#xff1a;wsdl 文件只能有一个binding&#xff0c;Salesforce是不支持多个binding的 2&#xff09;&a…

linux查询日志中页面返回状态码,[linux shell] Shell脚本实现apache日志中的状态码分析...

这篇文章主要介绍了Shell脚本实现apache日志中的状态码分析,本文先是介绍了按天切割日志的方法,然后给出了分析访问状态码的脚本,需要的朋友可以参考下一、首先将apache日志按天切割复制代码 代码如下:vi /etc/httpd/conf/httpd.confErrorLog "|rotatelogs /var/log/httpd…

e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调...

上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step &#xff08;三&#xff09; SqlServer数据库的访问” 下面讲一下&#xff0c;对于在写Node.js自动化测试脚本过程中&#xff0c;的编写回调问题&#xff0…

基于比率的路由到旧版和现代应用程序–通过Spring Cloud的Netflix Zuul

从应用程序的旧版本迁移到应用程序的现代化版本时&#xff0c;一个非常普遍的要求是能够将用户缓慢迁移到新应用程序。 在本文中&#xff0c;我将介绍通过Spring Cloud使用对Netflix Zuul的支持编写的这种路由层。 在继续之前&#xff0c;我必须承认&#xff0c;此处演示的大多…

linux查找设备所在分片,Linux设备驱动统一模型解析

soc节点指定了&#xff1c;0x0 0xe0000000 0x00100000&#xff1e;&#xff1b;此属性值指定对于1024KB范围的地址空间&#xff0c;在物理0x0处寻址的子节点映射到物理0xe0000000的父地址。通过这种映射&#xff0c;串行设备节点可以通过0xe0004600地址的加载或存储、0x4600(在…