常用jdk的命令行工具:_jhsdb:JDK 9的新工具

常用jdk的命令行工具:

我喜欢在分析性能和基于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的‘模式’。 一个观察可以做出的是,常用的选项--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所说的在JRockit中使用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

常用jdk的命令行工具:

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

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

相关文章

佳能2900打印机与win10不兼容_佳能2900打印机和惠普1020哪种好 佳能2900打印机和惠普1020对比【详解】...

现在的人们早已经习惯遇到身边美丽的景色&#xff0c;就用手机进行拍摄下来了&#xff0c;若想长久的留住这一刻的美好&#xff0c;拥有一台 打印机 就是很不错的选择&#xff0c;如今打印机的需求量在不断的增加&#xff0c;市面上的打印机品牌也在不断的增多&#xff0c;我们…

mysql 多表查询 join on_mysql多表查询

在做连表查询的时候&#xff0c;可以在联合的字段上面&#xff0c;分别加上索引字段&#xff0c;这样有加快搜索的速度左右连表查询时条件放在on后面和where后面的执行时机是不一样的例如test1表test2表执行SELECT * FROM test1 t1 LEFT JOIN test2 t2ON t1.not2.no AND t2.nam…

redis key失效的事件_《分享几道高频 Redis 高频面试题,面试不用愁》

1、说说 Redis 都有哪些应用场景&#xff1f;缓存&#xff1a;这应该是 Redis 最主要的功能了&#xff0c;也是大型网站必备机制&#xff0c;合理地使用缓存不仅可以加 快数据的访问速度&#xff0c;而且能够有效地降低后端数据源的压力。共享Session&#xff1a;对于一些依赖 …

解决文件内容的中文乱码_字符集_字符编码_字符编码方案

从第三方下载的java源文件&#xff0c;打开查看里面的中文全部是乱码&#xff0c;无论你使用什么字符编码集都无法正常显示&#xff0c;该文件是用UTF-8编码存档的&#xff0c;使用UTF-8解码也同样是乱码&#xff0c;相信很多人遇到类似的问题&#xff0c;我这里解决过一个经典…

rust为什么显示不了国服_捋捋 Rust 中的 impl Trait 和 dyn Trait

缘起一切都要从年末换工作碰上特殊时期, 在家闲着无聊又读了几首诗, 突然想写一个可以浏览和背诵诗词的 TUI 程序说起. 我选择了 Cursive 这个 Rust TUI 库. 在实现时有这么一个函数, 它会根据参数的不同返回某个组件(如 Button, TextView 等). 在 Cursive 中, 每个组件都实现了…

mysql不支持子查询_MySQL不支持子查询优化一例

一创建表 create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);insert into tt1 value一创建表create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);insert into tt1 values(1,1),(2,2),(3,3…

Mysql索引使用情况_介绍mysql索引失效的情况

mysql视频教程栏目索引失效的情况。索引对于MySQL而言&#xff0c;是非常重要的篇章。索引知识点也巨多&#xff0c;要想掌握透彻&#xff0c;需要逐个知识点一一击破&#xff0c;今天来先来聊聊哪些情况下会导致索引失效。图片总结版相关免费学习推荐&#xff1a;mysql视频教程…

java 类 null_深入理解java中的null“类型”

本文研究的主要是java中的null“类型”的相关实例&#xff0c;具体介绍如下。先给出一道简单的null相关的题目&#xff0c;引发我们对null的探讨,后面会根据官方语言手册对null“类型”进行解读。题目&#xff1a;下面程序能正确运行吗&#xff1f;解析&#xff1a;输出应该为 …

如何彻底禁用Chrome浏览器的缓存功能

禁止Chrome浏览器的缓存功能有几种方式&#xff1a; 使用Shift F5强制刷新缓存。实际使用中我们发现&#xff0c;这种方法对于部分网页的更改并不能做到释放缓存的作用&#xff0c;尤其是无法释放DNS缓存。 使用隐身模式Shift Control N. 这种方法只能在打开的页面上消除之…

java int integer内存_java中一个integer对象的内存占用是多少?可以通过java方法输出吗?...

今天翻记录看到了自己15年3月份提的问题&#xff0c;现在已经18年6月份了&#xff1b;去年线上项目出现内存瓶颈&#xff0c;原因是缓存的玩家角色数据过多&#xff0c;在长时间不停服的情况下&#xff0c;导致数据越来越膨胀&#xff0c;之前没有清除无用缓存的机制&#xff0…

windows查看器无法打开图片_关于windows微软商城无法打开 错误代码0x80004003问题...

我本来是商城可以进 但是一打开里面的东西就无法打开 按下面的刷新就闪退 如下图操作桌面winr 运行 services.msc然后找到windows update打开就行 但是开启了系统会自动更新若是修改时显示拒绝访问桌面winr 输入regedit打开注册表 注册表找到HKEY_LOCAL_MACHINESYSTEMCurrentCo…

win10 java 反编译_win10下对.java源文件进行编译和反编译的步骤

1、先写好代码&#xff0c;如下找了个示例代码&#xff0c;文件名是Mutex.java&#xff1a;package com.huangshiyi.concurrent.cha04;import java.util.concurrent.TimeUnit;public class Mutex {private final static Object MUTEX new Object();public void accessResource…

电容屏物体识别_相比传统的触摸屏,电容式触摸屏的优势

点击蓝字&#xff0c;轻松关注今日话题 如今&#xff0c;我们的身边有着许多电子产品&#xff0c;主要是因为它便于我们的生活&#xff0c;所以我们的身边出现了许多触摸屏。对于电子产品&#xff0c;我们使用之前要了解清楚它的使用性能&#xff0c;掌握多点信息&#xff0c;这…

java底层机制_Java同步机制的底层实现

在多线程编程中我们会遇到很多需要使用线程同步机制去解决的并发问题&#xff0c;而这些同步机制就是多线程编程中影响正确性和运行效率的重中之重。这不禁让我感到好奇&#xff0c;这些同步机制是如何实现的呢&#xff1f;好奇心是进步的源泉&#xff0c;就让我们一起来揭开同…

payara 创建 集群_高可用性(HA),会话复制,多VM Payara群集

payara 创建 集群抽象 在研究如何创建高可用性&#xff08;HA&#xff09;时&#xff0c;我发现了会话复制&#xff0c;多机处理的Payara / GlassFish群集&#xff0c;无法在单个参考中找到所需的一切。 我认为这将是一个普遍的需求并且很容易找到。 不幸的是&#xff0c;我的假…

积分和人民币比率_通过比率路由到旧版和现代应用程序–通过Spring Cloud的Netflix Zuul...

积分和人民币比率从应用程序的旧版本迁移到应用程序的现代化版本时&#xff0c;一个非常常见的要求是能够将用户缓慢迁移到新应用程序。 在本文中&#xff0c;我将介绍通过Spring Cloud使用对Netflix Zuul的支持编写的这种路由层。 在继续之前&#xff0c;我必须承认&#xff0…

Java集合类原理详解

文章目录1 集合框架1.1 集合框架概述1.1.1 容器简介1.1.1 容器的分类1.2 Collection1.2.1 常用方法1.2.2 迭代器1.3 List1.3.1 概述1.3.2 常用方法1.3.3 实现原理1.4 Map1.4.1 概述1.4.2 常用方法1.4.3 Comparable 接口1.4.4 实现原理1.4.5 覆写 hashCode()1.5 Set1.5.1 概述1.…

sql安装联机丛书提示发生网络错误_速达软件:安装问题解答

问题Q&A在安装MSDE数据库时&#xff0c;出现安装程序倒退的情况解决方案&#xff1a;这是以前装过SQL Server数据库或MSDE数据库,没有卸载干净.解决办法重装操作系统。安装MSDE数据库时&#xff0c;系统出现“读取文件C:\program files\Microsoft sql sever\mssql\data\msd…

java分布式系统开发_从微服务到分布式系统-Java开发人员生存指南

java分布式系统开发感觉像是对微服务的炒作正在慢慢地落到实处&#xff0c;并且我们的行业开始意识到&#xff0c;根据微服务背后的体系结构范式无法通过仅在现有组件之上公开一些HTTP接口来轻松创建一个系统。 。 我们似乎确实同意必须进行服务优化的基础架构&#xff0c;文化…

链表数据结构原理图/内存结构图/内存图

单项链表内存结构图&#xff08;也叫原理图&#xff09; 单项链表内存结构图