jvm jstat

过去,我已经写过关于Oracle和/或OpenJDK Java开发工具包(JDK)附带的几个命令行工具的信息,但是我从来没有专门写过jstat工具 。 Oracle JDK 9文档Early Access指出jstat用于“监视Java虚拟机(JVM)统计信息”。 还有一个警告,“此命令是实验性的,不受支持。” 尽管我引用了JDK 9文档,但jstat是以Java SE 8 , Java SE 7 , Java SE 6和J2SE 5中的某种形式( 一次称为jvmstat )成为Sun / Oracle JDK的一部分。 Java 1.4.1引入了HotSpot JVM的工具(仅在设置了-XX:+UsePerfData时启用),并且自Java 1.4.2开始提供了“始终在线”工具。

jstat提供的许多信息可以从可视工具(例如VisualVM ,JMX和平台MBean),垃圾收集日志或通过JVM选项中收集。 但是,与每个替代方案相比, jstat具有优势。 它的优点包括命令行工具所共有的优点,例如可以从脚本执行并运行而无需开发人员或其他人员。 能够将jstat应用于已经运行的Java进程以开始监视其JVM统计信息,而不是在启动JVM时指定对那些选项的监视,这也很有用。

对于本文中的示例,我正在使用Oracle JDK 9 build 164 。 下一个屏幕快照显示了该版本,还显示了开始使用jstat时要应用的第一个标志之一: -options标志。

如屏幕快照所示,以及jstat文档中所述 , jstat -options用于“显示特定平台安装的选项列表”。 在此处显示的示例中,以下选项可用:

  • -class
  • -compiler
  • -gc
  • -gccapacity
  • -gccause
  • -gcmetacapacity
  • -gcnew
  • -gcnewcapacity
  • -gcold
  • -gcoldcapacity
  • -gcutil
  • -printcompilation

在本文中,我将只讨论这些可用选项的一小部分,但是jstat文档提供了一个句子来描述每个jstat选项,并且每个选项的命令行用法与所有其他选项非常相似。 实际上,一旦学习了有关jstat使用的一些小知识,各种选项的执行就变得容易了。 使用jstat的困难部分通常是解释jstat提供的数据。

jstat -help选项将打印简单用法,如下一个屏幕快照所示。

jstat用法消息中,我们了解到jstat命令行工具是通过首先运行命令名称( jstat )和下一个带连字符的选项名称,然后是可选的-t和/或-h标志,然后运行该命令来执行的vimid ,并包含一个可选的时间间隔和在提供的时间间隔上执行命令的可选次数。 示例比描述性文字清晰,这篇文章和jstat文档中给出了一些示例。

为了监视“本地” JVM统计信息, vmid只是JVM进程的进程ID。 这与髋关节jcmd (或stodgy jps )为Java进程返回的PID相同。 下一个屏幕快照演示了使用jcmd的Java应用程序,我在我的例子(监测(在这种情况下,8728)来识别PID JEDIT在这种情况下)。

jstat文档的“虚拟机标识符”部分提供了有关vmid的更多详细信息,因为更复杂的vmid (用于JVM统计信息的远程监视)可以包括协议,本地目标计算机的vmid ,主机和端口。 尽管本文中的所有示例都将使用jstat和简单的Java PID( vmid ),但jstat文档的确提供了使用更详细的vmid进行JVM统计信息远程监视的示例。

对于本文中的其余示例,我想要一个Java应用程序,从JVM统计信息监视的角度来看,它比JEdit更有趣。 我决定在强烈推荐的Plumbr博客上使用Nikita Salnikov-Tarnovski的帖子“ Garbage Collection:提高吞吐量 ”中的“ PigInThePython ”示例应用程序。 如果您有兴趣查看PigInThePython的源代码,请参阅该文章 。

对于使用jstat第一个示例,我使用其最常用的选项之一: -gcutil 。 除了演示-gcutil选项之外,我还将使用第一个示例来演示和解释除gcutil之外通常适用于其他jstat选项的jstat输出选项。

以下屏幕快照演示了如何使用jcmd来获取PigInThePython应用程序的PID(在本例中为5096)以及如何以最简单的形式运行jstat -gcutil

jstat -gcutil以最简单的形式(没有其他选项)显示没有时间戳的单行输出。 列标题中描述jstat文档节“-gcutil选项”,其也描述了-gcutil选项如,“垃圾收集统计摘要”。 例如,本文档说明,其中一些列指示不同空间分配的使用百分比,而其他列指示垃圾收集事件的数量和垃圾收集的总时间。

我们通常希望将jstat提供的统计信息与受监视系统中其他事件发生的时间相关联,以识别这些事件与对JVM的影响之间的相关性。 jstat -t选项将在输出的开头加上时间戳。 此时间戳是自受监视的JVM启动以来的秒数。 尽管这对人类来说不像其他格式那样方便阅读,但确实可以将JVM统计信息与JVM运行所在的时间范围以及包含时间戳的垃圾收集日志相关联。 下一个屏幕快照演示了-t的作用:

监视JVM统计信息(例如由jstat -gcutil提交的统计信息)不止一次通常非常有用。 下一个屏幕快照演示了如何使用指定的间隔( 100ms指定的100毫秒间隔,以每100毫秒捕获并显示这些结果。

第一次显示快照后,最后一个屏幕快照中的输出永远不会重复带有列首字母缩写的标题。 如果希望在一定数量的行之后重复该标头,以便更轻松地知道哪些数字属于输出中更远的哪一列,则-h选项可用于指定列之后的结果数标头再次显示。 在下一个屏幕快照中, -h20用于每20行查看一次标题。

有时可能希望让jstat如此频繁地且仅在一定次数内提供其数据。 间隔允许您指定结果之间的持续时间,间隔之后的任何整数都将限制显示结果的总次数。 在接下来的屏幕快照,所述15处命令的末尾限制输出至15点总的行。

jstat -gccause选项返回与-gcutil相同的信息,但还会添加有关导致受监视垃圾收集的原因的信息。 以下屏幕快照对此进行了演示。

在上面的屏幕快照中,我们看到“上次垃圾收集的原因”(LGCC)是“ G1大量分配”,而“当前垃圾收集的原因”(GCC)是“无GC”(当前没有垃圾收集)进行)。

下一个屏幕快照演示了如何使用jstat -class查看“类加载器统计信息”,以了解已加载的类数(“ Loaded”),已加载的千字节数(第一个“ Bytes”),已卸载的类数(“ Unloaded”)以及数量卸载的字节数(第二个“字节”),以及“执行类加载和卸载操作所花费的时间”(“时间”)。

命令jstat -printcompilation指示“ Java HotSpot VM编译器方法统计信息”,并在下一个屏幕快照中演示。

-printcompilation选项显示列“已编译”(“最近编译的方法执行的编译任务数”),“大小”(“最近编译的方法的字节码的字节数”),“类型”(“最近编译的方法的编译类型”和“方法”(最近编译的方法的类/方法的名称,以与HotSpot VM选项-XX:+PrintCompilation一致的格式表示)。

使用jstat -compiler命令,我们可以查看“ Java HotSpot VM即时编译器统计信息”,例如执行的编译任务数(“ Compiled”),失败的编译任务数(“ Failed”),无效的编译任务数(“无效”),编译所花费的时间(“时间”),上次失败的编译的类型和类/方法名称(“ FailedType”和“ FailedMethod”)。 下一个屏幕快照对此进行了演示。

jstat还有更多可用的选项,其中大多数选项特定于受监视JVM中有关垃圾回收的不同观点。

jstat文档警告该工具是试验性的,在JDK的未来版本中可能会更改或删除。 该文档还警告不要编写脚本和工具来解析jstat的输出,因为将来输出的内容或格式可能会更改。 但是,我可以看到有人可能会冒这个险并编写解析代码,因为可以从脚本轻松访问此命令行工具,并且所需的解析代码不会很复杂。

这篇文章是jstat ,但是要了解更多有关该工具的知识。 与使用该工具相比,对该工具结果的解释要复杂得多,并且jstat提供的数据分析可能比收集数字的工作更具挑战性。 下面列出了一些其他资源,以提供有关使用jstat工具收集和分析Java虚拟机统计信息的更多信息。

其他jstat资源

  • Java Platform 9,标准版工具参考指南 : jstat
  • Java Platform 8,Standard Edition故障排除指南 : jstat实用程序
  • Plumbr:jstat
  • 使用jstat监视Java垃圾收集
  • 解释jstat的Full GC事件数
  • 解释jstat(堆内存)以怀疑Java内存泄漏
  • 解释jstat结果
  • jstat工具:-gc选项提供的新元空间统计信息
  • 学习java jstat
  • 'jstat -gcutil'–垃圾回收统计
  • 'jstat'命令选项和参数
  • 使用Jstat在Java中进行GC监视
  • 在Java中监视垃圾收集
  • 使用jstat报告自定义JVM指标集

翻译自: https://www.javacodegeeks.com/2017/05/jvm-statistics-jstat.html

jvm jstat

jvm jstat_使用jstat的JVM统计信息相关推荐

  1. jvm jstat_使用jstat报告自定义JVM指标集

    jvm jstat 我一直缺少在JStat中配置自定义标头的可能性 . 当然,有很多预定义的数据集,但是如果我们可以创建自己的数据集,那就更好了. 正如您可能已经设计的那样,我正在写这篇文章,因为这样 ...

  2. JVM工具之jstat

    JVM工具之jstat查询GC统计信息分析 JVM工具之jstat查询GC统计信息分析jstat基本使用语法jstat -class 加载类统计jstat -compiler 编译统计jstat -g ...

  3. 使用jstat的JVM统计信息

    过去,我已经写过关于Oracle和/或OpenJDK Java开发工具包(JDK)随附的几个命令行工具的信息,但是我从来没有专门写过jstat工具 . Oracle JDK 9文档Early Acce ...

  4. Java命令:jstat — 查看JVM的GC信息

    文章目录 一.简介 二.常用命令 1.jstat -class pid : class loader行为统计 2.jstat -compiler pid : JIT编译器行为统计 3.jstat -g ...

  5. Docker下使用jstat查看jvm的GC信息

    Jstat指令: jstat命令命令格式: jstat [Options]vmid [interval] [count] 参数说明: Options,选项,我们一般使用 -gcutil 查看gc情况 ...

  6. jstat分析JVM内存

    Jstat 是JDK自带的一个轻量级小工具.全称"Java Virtual Machine statistics monitoring tool",它位于java的bin目录下,主 ...

  7. jstat查看JVM的GC情况

    jstat可以查看堆各部分的使用量,以及类加载的数量 jstat所有的参数 > jstat -options jstat -class pid # 显示ClassLoad相关信息 jstat - ...

  8. Java8 官方jvm 标准参考 -XX 配置参数详细信息

    原文地址 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html 概要 java [ 选项 ] 类名 [ args ] ...

  9. JVM性能监控工具 - jstat

    Jstat全称JVM Statistics Monitoring Tool,用于监视虚拟机各种运行状态信息的命令工具.它可以显示本地或者远程虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据 ...

最新文章

  1. jupyter Nodebook如何查看函数帮助
  2. 新型的大型bbs架构(squid+nginx
  3. API编程基本控件使用
  4. 十一、Shell 文件包含
  5. 服务器里怎么维修装备,教你在服务器加自己的装备
  6. 函数式编程之-模式匹配(Pattern matching)
  7. php 处理 mysql to json, 前台js处理
  8. oracle如何检查是否rac,Oracle RAC 状态检查
  9. 转载-----Java Longest Palindromic Substring(最长回文字符串)
  10. 机器学习基础算法20-回归曲线拟合
  11. Pascal voc 数据集下载网址
  12. 人工智能该如何学习?详细的AI学习路线与资料推荐
  13. 用spss进行数据的标准化处理_SPSS统计分析案例:数据标准化
  14. 计算机自带游戏如何删除,win7怎么彻底删除自带游戏,win7自带游戏怎么删除隐藏...
  15. 小电科技CTO“肉山”芦宇峰:互联网过35岁就遭裁员?如何应对职业危机
  16. 摄像头取流转发 嵌入式系统_如何在不转发的情况下嵌入某人的Twitter视频
  17. java——简易绘图板
  18. 银行IT软件服务的公司 (不包括被收购的企业),统计国内员工人数比较多的企业
  19. 【wxPython 安装指南:error: legacy-install-failure】
  20. Tornado笔记——用Tornado搭建假单统计考勤系统(九)

热门文章

  1. P4001-[ICPC-Beijing 2006]狼抓兔子【对偶图】
  2. 欢乐纪中某A组赛【2019.7.8】
  3. P5290-[十二省联考2019]春节十二响【贪心,堆】
  4. ssl2661-廉价最短路径【SPFA】
  5. 2021牛客暑期多校训练营4 G-Product(组合意义+容斥原理)
  6. codeforces1497 D. Geniue(dp+图论)
  7. MongoDB投影字段
  8. Dubbo(二)之SpringBoot nacos集成
  9. TCP 三次握手原理,你真的理解吗
  10. 如何使用jstack分析线程状态