JVM工具之jstat

2023-11-18

JVM工具之jstat查询GC统计信息分析

JVM工具之jstat查询GC统计信息分析jstat基本使用语法jstat -class 加载类统计jstat -compiler 编译统计jstat -gc 垃圾回收统计jstat -gccapacity 垃圾回收器内存空间统计jstat -gccause 垃圾回收器分析统计jstat -gcmetacapacity 元数据内存空间统计jstat -gcnew 新生代垃圾回收统计jstat -gcnewcapacity 新生代内存空间统计jstat -gcold 老年代垃圾回收统计jstat -gcoldcapacity 老年代内存空间统计jstat -gcutil 总垃圾回收统计jstat -printcompilation JVM编译方法统计

注意:在linux中,使用jdk1.8版本为例

jstat工具,检查JVM的整体运行情况,比较实用工具之一,当我们想看JVM内的Eden、survivor、年轻代、老年代以及年轻代垃圾回收次数、老年代垃圾回收次数、年轻代垃圾回收消耗时间、老年代垃圾回收消耗时间情况

jstat基本使用语法

基本使用语法:jstat -<options> PID <interval> <count>

<options>:表示jstat的选择项 
PID:表示进程号
<interval>:表示整数型间隔时间(ms 或者m) 默认是毫秒级别
<count>:表示在间隔时间中打印次数

除此之外,可以用jstat -help 查看,还可使用jstat -options 查看,jstat 有哪些选择项

[CBB@localhost ~]$ jstat -help
Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

我们可以使用jps 来查询本地的进程号信息

jstat -options

[CBB@localhost ~]$ jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation
 

jstat -class 加载类统计

[root@localhost ~]# jstat -class 18750
Loaded  Bytes  Unloaded  Bytes     Time
  8859 16638.3        0     0.0      19.99
字段名称 表示含义
Loaded 加载class类的数量
Bytes 所占内存空间
Unloaded 未加载类的数量
Bytes 未加载类内存空间
Time 消耗时间

jstat -compiler 编译统计

[root@localhost ~]# jstat -compiler 18750
Compiled Failed Invalid   Time   FailedType FailedMethod
    4760      0       0    28.94          0
​
字段名称 表示含义
Compiler 编译成功数量
Failed 编译失败数量
Invalid 编译无效数量
Time 编译耗时
FailedType 编译失败的类型
FailedMethod 编译失败的方法

jstat -gc 垃圾回收统计

[root@localhost ~]# jstat -gc 18750
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
26176.0 26176.0 17720.1  0.0   209792.0 115200.9  262144.0   24367.5   49880.0 47907.7 6188.0 5813.7      4    1.343   4      0.325    1.668
字段名称 表示含义
S0C 幸存区1容量(单位:字节)
S1C 幸存区2容量(单位:字节)
S0U 幸存区1使用容量(单位:字节)
S1U 幸存区2使用容量(单位:字节)
EC 伊甸园区容量(单位:字节)
EU 伊甸园区使用容量(单位:字节)
OC 老年区容量(单位:字节)
OU 老年区使用容量(单位:字节)
MC 方法区容量(单位:字节)
MU 方法区使用容量(单位:字节)
CCSC 压缩类空间容量(单位:字节)
CCSU 压缩类空间使用容量(单位:字节)
YGC 年轻代垃圾回收次数
YGCT 年轻代垃圾回收消耗时间
FGC 老年代垃圾回收次数
FGCT 老年代垃圾回收消耗时间(单位:秒)
GCT 垃圾回收器总耗时时间(单位:秒)

jstat -gccapacity 垃圾回收器内存空间统计

[root@localhost ~]# jstat -gccapacity 18750
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
262144.0 262144.0 262144.0 26176.0 26176.0 209792.0   262144.0   262144.0   262144.0   262144.0      0.0 1093632.0  49880.0      0.0 1048576.0   6188.0      4     4
字段名称 表示含义
NGCMN 年轻代gc最小容量(单位:字节)
NGCMX 年轻代gc最大容量(单位:字节)
NGC 当前年轻代容量(单位:字节)
S0C 幸存区0容量(单位:字节)
S1C 幸存区1容量(单位:字节)
EC 伊甸园容量(单位:字节)
OGCMN 老年代gc最小容量(单位:字节)
OGCMX 老年代gc最大容量(单位:字节)
OGC 当前老年代gc容量(单位:字节)
OC 当前老年代容量(单位:字节)
MCMN 元数据最小容量(单位:字节)
MCMX 元数据最大容量(单位:字节)
MC 当前元数据使用容量(单位:字节)
CCSMN 压缩类最小容量(单位:字节)
CCSMX 压缩类最大容量(单位:字节)
CCSC 当前压缩类容量(单位:字节)
YGC 从应用程序启动到现在,年轻代垃圾回收次数
FGC 从应用程序启动到现在,老年代垃圾回收次数

jstat -gccause 垃圾回收器分析统计

[root@localhost ~]# jstat -gccause 18750 1000
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
 67.70   0.00  55.25   9.30  96.05  93.95      4    1.343     4    0.325    1.668 CMS Final Remark     No GC
字段名称 表示含义
S0 幸存区1使用百分比
S1 幸存区2使用百分比
E 伊甸园区使用百分比
O 老年代使用百分比
M 元数据使用百分比
CCS 压缩类使用百分比
YGC 从应用程序启动到现在,年轻代垃圾回收次数
YGCT 从应用程序启动到现在,年轻代垃圾回收消耗时间(单位:秒)
FGC 从应用程序启动到现在,老年代垃圾回收次数
FGCT 从应用程序启动到现在,老年代垃圾回收消耗时间(单位:秒)
GCT 从应用程序启动到现在,垃圾回收器总消耗时间(单位:秒)
LGCT
GCC

jstat -gcmetacapacity 元数据内存空间统计

[root@localhost ~]# jstat -gcmetacapacity 18750 1000
   MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT
       0.0  1093632.0    49880.0        0.0  1048576.0     6188.0     4     4    0.325    1.668
​
字段名称 表示含义
MCMN 元数据最小容量(单位:字节)
MCMX 元数据最大容量(单位:字节)
MC 当前元数据容量大小(单位:字节)
CCSMN 压缩类最小空间容量(单位:字节)
CCSMX 压缩类最大空间容量(单位:字节)
CCSC 当前压缩类容量大小(单位:字节)
YGC 从应用程序启动到现在,年轻代垃圾回收次数
FGC 从应用程序启动到现在,老年代垃圾回收次数
FGCT 从应用程序启动到现在,老年代垃圾回收消耗时间(单位:秒)
GCT 从应用程序启动到现在,垃圾回收总消耗时间(单位:秒)

jstat -gcnew 新生代垃圾回收统计

[root@localhost ~]# jstat -gcnew 18750
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
26176.0 26176.0 17720.1    0.0  6   6 13088.0 209792.0 115900.6      4    1.343
​
字段名称 表示含义
S0C 幸存区1容量(单位:字节)
S1C 幸存区2容量(单位:字节)
S0U 幸存区1使用容量(单位:字节)
S1U 幸存区2使用容量(单位:字节)
TT 对象在年轻代存活的次数
MTT 对象在年轻代存货的最大次数
DSS 指望的幸存区容量(单位:字节)
EC 伊甸园容量(单位:字节)
EU 伊甸园使用容量(单位:字节)
YGC 从应用程序启动到现在,年轻代垃圾回收次数
YGCT 从应用程序启动到现在,年轻代垃圾回收消耗时间(单位:秒)

jstat -gcnewcapacity 新生代内存空间统计

[root@localhost ~]# jstat -gcnewcapacity 18750
  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
  262144.0   262144.0   262144.0  26176.0  26176.0  26176.0  26176.0   209792.0   209792.0     4     4
字段名称 表示含义
NGCMN 年轻代最小容量(单位:字节)
NGCMX 年轻代最大容量(单位:字节)
NGC 当前年轻代容量大小(单位:字节)
S0CMX 幸存区1最大容量(单位:字节)
S1CMX 幸存区2最大容量(单位:字节)
S1C 当前幸存区2容量大小(单位:字节)
ECMX 伊甸园最大的容量(单位:字节)
EC 当前伊甸园容量(单位:字节)
YGC 从应用程序启动到现在,年轻代垃圾回收次数
FGC 从应用程序启动到现在,老年代垃圾回收次数

jstat -gcold 老年代垃圾回收统计

[root@localhost ~]# jstat -gcold 18750
   MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT
 49880.0  47907.7   6188.0   5813.7    262144.0     24367.5      4     4    0.325    1.668
字段名称 表示含义
MC 方法区空间容量(单位:字节)
MU 方法区使用容量(单位:字节)
CCSC 压缩类空间容量(单位:字节)
CCSU 压缩类空间使用容量(单位:字节)
OC 老年代空间容量(单位:字节)
OU 老年代使用容量(单位:字节)
YGC 从应用程序启动到现在,年轻代垃圾回收次数
FGC 从应用程序启动到现在,老年代垃圾回收次数
FGCT 从应用程序启动到现在,老年代垃圾回收消耗时间(单位:秒)
GCT 从应用程序启动到现在,垃圾回收器总消耗时间(单位:秒)

jstat -gcoldcapacity 老年代内存空间统计

[root@localhost ~]# jstat -gcoldcapacity 18750
   OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
   262144.0    262144.0    262144.0    262144.0     4     4    0.325    1.668
字段名称 表示含义
OGCMN 老年代垃圾回收最小容量(单位:字节)
OGCMX 老年代垃圾回收最大容量(单位:字节)
OGC 当前老年代空间容量(单位:字节)
OC 老年代容量(单位:字节)
YGC 从应用程序启动到现在,年轻代垃圾回收次数
FGC 从应用程序启动到现在,老年代垃圾回收次数
FCGT 从应用程序启动到现在,老年代垃圾回收消耗时间(单位:秒)
GCT 从应用程序启动到现在,垃圾回收器总消耗时间(单位:秒)

jstat -gcutil 总垃圾回收统计

[root@localhost ~]# jstat -gcutil 18750 1000
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
 67.70   0.00  55.58   9.30  96.05  93.95      4    1.343     4    0.325    1.668
 67.70   0.00  55.58   9.30  96.05  93.95      4    1.343     4    0.325    1.668
 67.70   0.00  55.58   9.30  96.05  93.95      4    1.343     4    0.325    1.668
字段名称 表示含义
S0 幸存区1使用百分比
S1 幸存区2使用百分比
E 伊甸园使用百分比
O 老年区使用百分比
M 元数据使用百分比
CCS 压缩类使用百分比
YGC 年轻代垃圾回收次数
YGCT 从应用程序启动到现在,年轻代gc消耗时间(单位:秒)
FGC 从应用程序启动到现在,老年代垃圾回收次数
FGCT 从应用程序启动到现在,老年代垃圾回收消耗时间(单位:秒)
GCT 从应用程序启动到现在,垃圾回收器总消耗时间(单位:秒)

jstat -printcompilation JVM编译方法统计

[root@localhost ~]# jstat -printcompilation 18750
Compiled  Size  Type Method
    4821    160    1 java/util/BitSet nextSetBit
字段名称 表示含义
Compiled 最近方法编译的数量
Size 最近方法编译字节码的数量
Type 最近方法编译类型
Method 方法名标识

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JVM工具之jstat 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • 《高效能程序员的修炼》之译者序

    出版社的冀康一开始来找我谈翻译这本书的时候 我的第一反应是 这兄弟真是不知道我现在有多忙 我每天要处理200多封邮件 在资源有限的情况下经常要同时带6 7个项目 而且每个项目的交付计划都很紧 压力很大 每天起码工作12个小时 有时候还要熬夜
  • python连续输入多行_python-遍历Pandas DataFrame并插入行的最快方法

    我正在构建一个工具 以帮助您每周自动执行来自多个实验室设置的数据审查 每天都会生成一个制表符分隔的文本文件 每行代表每2秒获取的数据 因此共有43200行和许多列 每个文件为75mb 我正在使用pandas readcsv加载七个文本文件
  • Python基础知识笔试

    Python基础知识笔试 单选题 2 5分 20题 1 下列哪个表达式在Python中是非法的 B A x y z 1 B x y z 1 C x y y x D x y 2 python my py v1 v2 命令运行脚本 通过 fro
  • JavaScript 基础

    JavaScript 基础 JavaScript 是一门编程语言 可为网站添加交互功能 例如 游戏 动态样式 动画以及在按下按钮或收到表单数据时做出的响应等 本文介绍了 JavaScript 的精彩之处和主要用途 JavaScript 到底
  • Python中的列表和元组

    Python中的列表和元组 1 列表和元组 2 Python 中的列表和元组都支持负数索引 3 列表和元组都支持切片操作 4 列表和元组都可以随意嵌套 5 两者也可以通过 list 和 tuple 函数相互转换 6 列表和元组常用的内置函数
  • easyexcel和poi对比_POI 和 EasyExcel

    POI 和 easyExcel 讲解 转自狂神老师 仅作为个人笔记使用 一 POI 常用进程 1 将用户信息导出为excel表格 导出数据 2 将Excel表中的信息录入到网站数据库 习题上传 开发中经常会设计到excel的处理 如导出Ex
  • 五、深入理解JDK1.7中HashMap哈希冲突解决方案

    导读 前面文章一 深入理解 Java集合初篇 中我们对Java的集合体系进行一个简单的分析介绍 上两篇文章二 Jdk1 7和1 8中HashMap数据结构及源码分析 三 JDK1 7和1 8HashMap数据结构及源码分析 续 中我们分别对
  • Windows+VS2019用vcpkg编译colmap以及用Cmake编译colmap源码

    Windows VS2019用vcpkg编译colmap以及用Cmake编译colmap源码 Window下官方建议用vcpkg安装 这里我已经安装好了VS2019以及cuda11 7 1 安装vcpkg git clone https g
  • cocos mac android,cocos2dx mac android.mk

    LOCAL PATH call my dir include CLEAR VARS call import add path LOCAL PATH cocos2d call import add path LOCAL PATH cocos2
  • 深度学习论文阅读列表

    deep learning paper read lists 同步更新与github https github com chenmeiya deep learning paper read lists Learning invariace
  • Qt Creator 3.5.1(Qt4.8.4库+MinGW4.4)下不能调试问题解决(Debugging has failed)

    Qt Creator 3 5 1 Qt4 8 4库 MinGW4 4 下使用minGW4 4默认的GDB调试会不成功 提示如下 Debugging starts Debugging has failed Debugging has fini
  • 轻量级AI语言模型,直接轻松运行在你家电脑上

    最近在研究AI语言模型和AI绘画模型 无意间发现了这个轻量级模型 只需要拿到这两个文件 AI exe gpt4all lora quantized bin 双击AI exe就能直接使用 方便快捷 简直不要太爽 上面工作准备好之后 win R
  • PCL常用小知识

    转自 SimpleTriangle 时间计算 pcl中计算程序运行时间有很多函数 其中利用控制台的时间计算是 首先必须包含头文件 include
  • makeinfo: command not found解决方法

    sudo apt get install texinfo
  • Codeforces Round #751 (Div. 2) D. Frog Traveler(BFS)

    题解 因为我们最多把所有的点跳一遍么 所以直接BFS模拟一下就行了 注意现在跳的点不能是以前已经跳过的点 并且只能越跳越高 否则没有意义 这样就保证了时间复杂度是线性的 AC代码 include
  • 蓝桥杯跑步锻炼

    问题描述 小蓝每天都锻炼身体 正常情况下 小蓝每天跑 1 千米 如果某天是周一或者月初 1 日 为了 激励自己 小蓝要跑 2 千米 如果同时是周一或月初 小蓝也是跑 2 千米 小蓝跑步已经坚持了很长时间 从 2000 年 1 月 1 日周六
  • 【Java】使用Mybatis调用SQL Server存储过程

    前言 在软件开发过程中 经常会使用到存储过程 本篇文章用于讲解示例如何使用SpringBoot Mybatis的方式调用SQL Server数据库的存储过程并且得到存储过程的回参 一 存储过程的入参 这是存储过程的入参 用于后续Mybati
  • csgo fps不稳定和服务器,win10玩csgofps不稳定怎么办

    在使用win10系统的时候 很多用户们去玩csgo这款游戏 但是有些用户们却发现在玩耍游戏的时候 游戏帧数非常的不稳定 时高时低 其实导致游戏帧数不稳定的因素有很多 看看解决的方法吧 win10玩csgofps不稳定怎么办 1 关闭游戏的多
  • 基于YOLOv8模型的烟火目标检测系统(PyTorch+Pyside6+YOLOv8模型)

    摘要 基于YOLOv8模型的烟火目标检测系统可用于日常生活中检测与定位烟火目标 利用深度学习算法可实现图片 视频 摄像头等方式的目标检测 另外本系统还支持图片 视频等格式的结果可视化与结果导出 本系统采用YOLOv8目标检测算法训练数据集
  • JVM工具之jstat

    JVM工具之jstat查询GC统计信息分析 JVM工具之jstat查询GC统计信息分析jstat基本使用语法jstat class 加载类统计jstat compiler 编译统计jstat gc 垃圾回收统计jstat gccapacit