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

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

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

jstat命令格式:

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

jstat命令的帮助信息:

jstat统计类加载信息

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

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堆的垃圾收集统计信息,举例如下:

jstat -gc 21060 1000 3

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

输出如下:

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

S0C: 第1个Survivor空间的容量 Current survivor space 0 capacity (kB).
S1C: 第2个Survivor空间的容量(kB).
S0U: 第1个Survivor空间中已经使用的容量 Survivor space 0 utilization (kB).
S1U: 第2个Survivor空间中已经使用的容量(kB).
EC: Eden空间的容量(kB).
EU: Eden空间中已经使用的容量(kB).
OC: 老年代Old空间的容量(kB).
OU: 老年代Old空间已经使用的容量(kB).
MC: 元空间Metaspace的容量(kB).
MU: 元空间Metaspace已经使用的容量(kB).
CCSC: 压缩类空间的容量 Compressed class space capacity (kB).
CCSU: 压缩类空间已经使用的容量(kB).
YGC: Young GC发生的次数.
YGCT: Young GC花费的时间.
FGC: Full GC发生的次数.
FGCT: Full GC花费的时间.
GCT: 所有的GC花费的总时间.

jstat -gccapacity

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

jstat -gccapacity 21060

输出如下:

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

jstat -gcutil

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

jstat -gcutil 21060

输出如下:

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

jstat统计JIT编译信息

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

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

jstat -compiler 21060

输出如下:

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

jstat的其他参数

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

class: Displays statistics about the behavior of the class loader.
compiler: Displays statistics about the behavior of the Java HotSpot VM Just-in-Time compiler.
gc: Displays statistics about the behavior of the garbage collected heap.
gccapacity: Displays statistics about the capacities of the generations and their corresponding spaces.
gccause: Displays a summary about garbage collection statistics (same as -gcutil), with the cause of the last and current (when applicable) garbage collection events.
gcnew: Displays statistics of the behavior of the new generation.
gcnewcapacity: Displays statistics about the sizes of the new generations and its corresponding spaces.
gcold: Displays statistics about the behavior of the old generation and metaspace statistics.
gcoldcapacity: Displays statistics about the sizes of the old generation.
gcmetacapacity: Displays statistics about the sizes of the metaspace.
gcutil: Displays a summary about garbage collection statistics.
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. 你从未见过的Case Study写作指南

    Case Study,意为案例分析,Case Study与其它的留学论文作业最大的的差别就在于Case Study在论文开始就需要明确给出论,然后再阐述这个结论的论证依据和理由.留学生们需要知道的是C ...

  2. Netty 中队列的使用

    任务队列中的Task有3种典型使用场景 用户程序自定义的普通任务 此前代码: 参考https://www.cnblogs.com/ronnieyuan/p/12016712.html NettySer ...

  3. HDU - 6201 transaction transaction transaction(spfa求最长路)

    题意:有n个点,n-1条边的无向图,已知每个点书的售价,以及在边上行走的路费,问任选两个点作为起点和终点,能获得的最大利益是多少. 分析: 1.从某个结点出发,首先需要在该结点a花费price[a]买 ...

  4. POJ 2823:Sliding Window 单调队列

    Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 48930   Accepted: 14130 ...

  5. Express - 采用bcryptjs进行密码加密

    1.安装bcryptjs模块 npm install bcryptjs --save 2.在需要加密的模块中引入bcryptjs库    require('bcryptjs');   实战 : /** ...

  6. oracle 开发注意事项

    新建表或字段时,不能使用char,统一使用varcha,防止判断null时有遗漏 新建表,索引,序列,新增删除或修改字段的时候,要先判断操作的对象是否存在,否则SLQ会报错 插入或者修改特殊字符,解决 ...

  7. 解决:Server IPC version 9 cannot communicate with client version 4

    使用idea的maven项目运行mapreduce程序Server IPC version 9 cannot communicate with client version 4 原因: Java初始化 ...

  8. 090-PHP数组过滤函数array_filter

    <?php function odd($x){ //定义过滤偶数的函数 if($x%2==1) return TRUE; } function even($x){ //定义过滤奇数的函数 if( ...

  9. Java交换数据为何不起作用原因分析

    一.概述 目前各类语言中向函数传递参数的类型分为三种: 按值传递 按引用传递 按指针传递 其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不改变参数的值:按引用传递表示方法(函数)接收的调 ...

  10. Promise 与 await 组合使用

    看例子就行了,废话不多说!   async function checkStatus(name){   return new Promise((resolve,reject) => {      ...