本系列笔记主要基于《深入理解Java虚拟机:JVM高级特性与最佳实践 第2版》,是这本书的读书笔记。

jstat命令用来查看JVM统计信息,可以查看类加载信息、垃圾收集的信息、JIT编译信息等等,功能非常丰富。

所有的JDK工具都可以在Oracle官网的 Java Tools Reference 文档中找到使用说明,这是主要参考,包括命令格式、参数内容、输出信息等等。

jstat命令格式:

  1. jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]

jstat命令的帮助信息:

jstat统计类加载信息

jstat命令使用-class参数可以统计类加载信息,命令举例:

  1. jstat -class 21060 1000 10

-class表示查看类加载统计信息,21060是pid,1000表示每1000毫秒打印一次,10表示打印10次。

输出如下:

输出信息中,每一列的含义可以查阅 Java Tools Reference 文档,从左到右依次,Loaded表示加载的类的个数,Bytes表示加载了多少KB,Unloaded表示卸载的类的个数,Bytes表示卸载了多少KB,Time表示类加载和卸载花费的时间。

jstat统计垃圾收集信息

jstat命令中,常用的跟垃圾收集相关的统计参数有:-gc、-gccapacity、-gcutil、-gccause、-gcnew、-gcold。

jstat -gc

-gc参数用来查看Java堆的垃圾收集统计信息,举例如下:

  1. jstat -gc 21060 1000 3

其中,21060是pid,1000表示每1000毫秒打印一次,3表示打印3次。

输出如下:

同样的,输出信息中,每一列的含义可以查阅 Java Tools Reference 文档,依次如下:

  1. S0C: 1Survivor空间的容量 Current survivor space 0 capacity (kB).
  2. S1C: 2Survivor空间的容量(kB).
  3. S0U: 1Survivor空间中已经使用的容量 Survivor space 0 utilization (kB).
  4. S1U: 2Survivor空间中已经使用的容量(kB).
  5. EC: Eden空间的容量(kB).
  6. EU: Eden空间中已经使用的容量(kB).
  7. OC: 老年代Old空间的容量(kB).
  8. OU: 老年代Old空间已经使用的容量(kB).
  9. MC: 元空间Metaspace的容量(kB).
  10. MU: 元空间Metaspace已经使用的容量(kB).
  11. CCSC: 压缩类空间的容量 Compressed class space capacity (kB).
  12. CCSU: 压缩类空间已经使用的容量(kB).
  13. YGC: Young GC发生的次数.
  14. YGCT: Young GC花费的时间.
  15. FGC: Full GC发生的次数.
  16. FGCT: Full GC花费的时间.
  17. GCT: 所有的GC花费的总时间.

jstat -gccapacity

-gccapacity参数用来统计各个内存区域的容量使用的最大最小值,例如使用到的最大值、最小值、当前使用值等等,举例如下:

  1. jstat -gccapacity 21060

输出如下:

输出信息中,每一列的含义可以查阅 Java Tools Reference 文档,就不再一一列举了。基本都是统计的新生代老年代使用的最小值、最大值、当前值,Survivor和Eden空间的当前值,元空间和压缩类空间的最小值、最大值、当前值。

jstat -gcutil

-gcutil参数统计的是各个内存区域使用率,已使用容量的百分比,举例如下:

  1. jstat -gcutil 21060

输出如下:

输出信息中,统计的都是Survivor、Eden、老年代、元空间、压缩类空间等的使用百分比。

jstat统计JIT编译信息

jstat命令中,跟JIT编译相关的统计参数有:-compiler、-printcompilation。

-compiler参数统计的是JIT编译信息,举例如下:

  1. jstat -compiler 21060

输出如下:

输出信息中,从左到右每列依次是,Compiled表示完成了多少次JIT编译,Failed表示编译失败的次数,Invalid表示无效的编译次数,Time表示JIT编译总共花费的时间,FailedType最后一次编译失败的编译类型,FailedMethod最后一次编译失败的类名和方法名。

jstat的其他参数

除了上面列举的几个,jstat还有很多其他参数,使用手册参考 Java Tools Reference 文档,jstat所有统计参数列举如下:

  1. class: Displays statistics about the behavior of the class loader.
  2. compiler: Displays statistics about the behavior of the Java HotSpot VM Just-in-Time compiler.
  3. gc: Displays statistics about the behavior of the garbage collected heap.
  4. gccapacity: Displays statistics about the capacities of the generations and their corresponding spaces.
  5. gccause: Displays a summary about garbage collection statistics (same as -gcutil), with the cause of the last and current (when applicable) garbage collection events.
  6. gcnew: Displays statistics of the behavior of the new generation.
  7. gcnewcapacity: Displays statistics about the sizes of the new generations and its corresponding spaces.
  8. gcold: Displays statistics about the behavior of the old generation and metaspace statistics.
  9. gcoldcapacity: Displays statistics about the sizes of the old generation.
  10. gcmetacapacity: Displays statistics about the sizes of the metaspace.
  11. gcutil: Displays a summary about garbage collection statistics.
  12. printcompilation: Displays Java HotSpot VM compilation method statistics.

JVM探秘:jstat查看JVM统计信息的更多相关文章

  1. jstat查看jvm的GC

    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上 ...

  2. jstat查看JVM的GC情况

    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上 ...

  3. JVM系列第12讲:JVM参数之查看JVM参数

    今天要说的是如何查看 JVM 中已经设置的参数,包括显示参数和隐式参数. 打印显式参数 -XX:+PrintVMOptions 该参数表示程序运行时,打印虚拟机接受到的命令行显式参数.我们用下面的命令 ...

  4. 【debug技巧】jstat:虚拟机统计信息监视器

    我们在日常开发时,难免会遇到一些没有内存泄漏等问题.有时,我们无法下载arthas等开源的诊断工具.这时候,我们就可以借助JDK自带的一些诊断工具. 首先我们可以使用jstat查看gc信息 字段含义 ...

  5. jstat查看JVM统计信息

    可以查看以下信息 [jdk基于1.8] 1.类装载 2.垃圾收集 3.JIT编译 一.类装载 返回参数的含义 二.垃圾收集 -gc的输出结果含义 JVM的内存结构 三.查看JIT编译 -compile ...

  6. jstat查看JVM GC情况

    转自 https://www.cnblogs.com/yjd_hycf_space/p/7755633.html

  7. JVM探秘5---JVM监控命令大全

    jps命令---查看JVM进程状况 格式为:jps [options] [hostid] 功能描述: jps是用于查看有权访问的hotspot虚拟机的进程. 当未指定hostid时,默认查看本机jvm ...

  8. 查看JVM默认参数及微调JVM启动参数

    目录 查看某个JVM进程堆内存信息 微调JVM启动参数 查看JVM的一些默认参数 参考廖雪峰老师的这篇 JVM调优的正确姿势: https://www.liaoxuefeng.com/article/ ...

  9. oracle10g 统计信息查看、收集

      1. 统计信息查看 1.1 单个表的全局统计信息.统计效果查看 2. 统计信息分析(收集) 2.1 分析工具选择 2.2 分析前做index重建 2.3 分析某数据表,可以在PL/SQL的comm ...

随机推荐

  1. 刷题21. Merge Two Sorted Lists

    一.题目说明 这个题目是21. Merge Two Sorted Lists,归并2个已排序的列表.难度是Easy! 二.我的解答 既然是简单的题目,应该一次搞定.确实1次就搞定了,但是性能太差: R ...

  2. 使用JavaScript实现一个简单的编译器

    在前端开发中也会或多或少接触到一些与编译相关的内容,常见的有 将ES6.7代码编译成ES5的代码 将SCSS.LESS代码转换成浏览器支持的CSS代码 通过uglifyjs.uglifycss等工具压 ...

  3. restfulframework详解

    restfulframework详解 第一篇 RESTful规范

  4. 我编写的EEPROM 上位机软件

    进入模式: 上位机发送 消息 上位机EEPROM 按下进入模式 消息的ID号是:0x08111111 数据是: 00 01 ff 00 00 00 00 00 上位机显示 运行状态 :为进入模式 当我 ...

  5. 51nod 1423:最大二“货”

    1423 最大二"货" 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  取消关注 白克喜欢找一个序列 ...

  6. c++链表演示

    #include<iostream> #include<string.h> #include<conio.h> using namespace std; #defi ...

  7. Vulkan SDK 之 Shaders

    Compiling GLSL Shaders into SPIR-V 1.SPIR-V 是vulkan的底层shader语言.GLSL可以通过相关接口转换为SPIR-V. Creating Vulka ...

  8. 097-PHP循环使用next取数组元素二

    <?php function return_item($arr, $num = 0) { //定义函数 if ($num < 0) { end($arr); //将数组指针指向最后一个元素 ...

  9. 在各浏览器和各分辨率下如何让div内的table垂直水平居中?

    本文主要针对需要全屏显示的系统页面内,因为系统经常会用到表格table布局,偶尔的table需要显示在div的正中间,所以鄙人特此总结下div内table的万千姿态. <!DOCTYPE htm ...

  10. 前端ajax用post方式提交json数据给后端时,网络报错 415

    项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...