职业学校查询网站,廊坊做网站教程,深圳软件公司开发,咨询公司名字大全常用jdk的命令行工具:我喜欢在分析性能和基于Java的应用程序的其他问题的早期步骤中使用JDK随附的命令行工具#xff0c;并在诸如jcmd #xff0c; jps #xff0c; jstat #xff0c; jinfo #xff0c; jhat和jmap #xff0c; jrunscript #xff0c; jstack之类的 工… 常用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命令提供的输出 。 正如人们所期望的那样 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所说的在JRockit中使用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常用jdk的命令行工具: