文章目录

  • 1. jstat介绍
  • 2. jstat用法
    • 2.1 案例一
    • 2.2 案例二
    • 2.3 案例三
    • 2.4 案例四
    • 2.5 案例五
    • 2.6 案例六
    • 2.7 案例七
    • 2.8 案例八
    • 2.9 案例九
    • 2.12 案例十
    • 2.13 案例十一

1. jstat介绍

jstat全名JVM statistics monitoring tool,用于监视虚拟机各种运行状态信息的命令工具,它可以显示本地或者远程虚拟机进程中类的装载、内存、垃圾收集、JIT编译运行等运行时数据。

2. jstat用法

命令:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

2.1 案例一

jstat -class vmid

-class表示查看加载的类情况,vmid表示要查看的进程号。如下所示

其中Loaded表示已经加载的类个数,Bytes加载的类的字节数,Unloaded表示卸载的类个数,Bytes表示卸载的类字节数,Time表示类加载的耗时。

2.2 案例二

jstat -class vimid interval

其中interval表示输出统计数据的间隔,即每隔多长时间输出一次数据,interval单位为ms。如下所示,只截取其中部分片段,表示每隔1000ms输出一次数据。

2.3 案例三

jstat -class vmid interval count

其中count表示输出的次数,该命令表示每隔interval时间输出一次类的加载信息,总共输出count次。如下图所示,每隔1000ms输出一次类的加载信息,总共输出10次后退出。

2.4 案例四

jstat -class -t vmid

其中-t表示虚机运行后到达当前时间的间隔。如下所示

其中Timestamp表示虚拟机当前执行了134.5s时间了,其它参数如上述案列介绍。

2.5 案例五

jstat -class -h<lines> vmid interval count

其中-h表示每隔多少行打印一次头信息,如下所示

2.6 案例六

jstat -gc vmid

显示GC相关的堆信息,如下所示

其中S0C表示第一个幸存者区大小为4096个字节,S1C表示第二个幸存者区大小为4096个字节,S0U表示第一个幸存者区已经使用了0个字节,S1U表示第二个幸存者区已经使用了0个字节,EC表示Eden区空间为25600个字节,EU表示Eden区已经使用了4618个字节;OC表示老年代内存为68608个字节,OU表示老年代已经使用了0个字节。MC表示方法区大小为4480各个字节,MC表示方法区容量4480,MU表示方法区使用空间757.5个字节,CCSC表示当前压缩类空间的容量384个字节,CCSU表示当前压缩类空间目前已使用空间75.9个字节,YGC表示从应用程序启动到采样时年轻代中gc次数,YGCT表示从应用程序启动到采样时年轻代中gc所用时间多少s,FGC表示FULL GC的次数,FGCT表示从应用起到到当前FULL GC花费的时间多少s,GCT表示从应用起到到当前GC总共花费时间多少s,是YGCT+FGCT之和。

2.7 案例七

jstat -gccapatity vmid

该命令用于查看新生代、老年代、元空间的存储容量情况。如下图所示

其中NGCMN表示年轻代初始化的最小字节,NGCMX表示年轻代最大容量,NGC表示年轻代当前容量,S0C表示Survivor0中的容量,S1C表示Survivor1的容量,EC表示Eden区的容量,OGCMN表示老年代初始化最小字节,OGCMX表示老年代最大容量,OGC表示老年代当前容量,OC也是表示老年代当前容量,MCMN表示最小元空间容量,MCMX表示最大元空间容量,MC表示当前元空间容量,CCSMN表示最小压缩类空间,CCSMX表示最大压缩空间,CCSC表示当前压缩类空间,YGC表示年轻代GC次数,FGC表示老年代次数。

2.8 案例八

jstat -gcutil vmid
显示内容基本与-gc相同,主要关注的是使用空间占总空间的百分比。如下所示

S0表示survivor0使用的百分比,S1表示survivor1使用的百分比,E表示Eden 区使用内存的百分比,O表示老年代内存使用的百分比,M表示MetaSpace 元空间内存使用百分比,CSS表示压缩类空间使用百分比,YGC表示程序启动以来 Young GC 发生的次数,YGCT表示程序启动以来 Young GC 共消耗的时间(s),FGC表示程序启动以来 Full GC 发生的次数,FGCT表示程序启动以来 Full GC 共消耗的时间(s),GCT表示程序启动以来 GC 的总用时(s),即等于YGCT+FGCT之和。

2.9 案例九

jstat -gccause vmid
显示内容基本与-gc一致,但比-gc多输出一列发生GC的原因。如下所示

YGC之前的表示内存使用百分比,YGC表示年轻代GC次数,YGCT表示从应用启动以来年轻代GC花费的时间,FGC表示老年代GC次数,FGCT表示从应用启动以来老年代GC花费的时间,GCT表示从应用程序启动到采样时gc用的总时间,LGCC表示发生年轻代GC的原因(本案例未发生GC),GCC表示发生FULL GC的原因(本案例未发生GC)。

2.12 案例十

OOM排查:可以通过jstat输出的统计信息,查看两次统计信息中间,计算GC消耗的总时间占JVM运行总时间的比例,如果比例超过20%,说明目前堆压力比较大,如果比例超过90%,则说明堆里几乎没有可用空间,随时都可能抛出OOM。如下所示,Timestamp列显示的程序执行总时间,GCT显示的是GC发生消耗的总时间,采集两次的统计信息,比如下图红框中标识所示,两次采集之间,程序总执行时间为67.5-52.0=15.5s,两次采集之间,GC发生消耗总时间为0.3233-0.155=0.168s,则GC耗时与程序执行总耗时比为0.168/0.323,约等于1%,说明堆内存压力尚可。

2.13 案例十一

内存泄漏排查:如案例十二所示,OU列表示老年代使用的内存空间,在java运行期间,每隔一段长时间获取OU列在该段时间的最小值,如果这些最小值是上涨的趋势,说明老年代内存使用量不断上涨,意味着老年代有无法回收的对象不断增多,就有可能增加内存泄漏的风险。

8.2 JVM命令行监控——jstat相关推荐

  1. 8.5 JVM命令行监控——jmap

    文章目录 1. jmap描述 2. jmap用法 2.1 导出dump文件 2.2 输出堆内存信息 2.2.1 输出堆空间使用信息 2.2.2 输出对象统计信息 1. jmap描述 jmap全称jvm ...

  2. Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件

    1.Java内存泄露和内存溢出对比 1.1 Java 内存泄露 内存泄露是指一个不再被程序使用的对象或变量还在内存中占用空间. 1.1.1判断内存空间是否符合垃圾回收的标准 在Java语言中,判断一个 ...

  3. heartbeat如何监控程序_一文看懂MyCAT 命令行监控命令,监控调优必备

    概述 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Myca ...

  4. 二十、JVM命令行监控工具

    一.概述 1.导致出现性能问题的因素 1.线程控制 2.磁盘读写 3.数据库访问 4.网络I/O 5.垃圾收集 2.为什么需要调优 1.防止出现OOM<关于OOM可以参考> 2.解决OOM ...

  5. Python实现命令行监控北京实时公交之一

    开头先放上效果展示 在命令行输入 python bus.py -i,显示app基本信息,如下: 在命令行输入 python bus.py 438,显示北京438路公交车的位置,如下: 红色的B说明在梅 ...

  6. 每个Java程序员必须知道的5个JVM命令行标志

    不熟悉JVM将不仅会影响应用程序性能,而且当JVM出问题时,尝试修复也会很困难. 本文将介绍一些命令行标志,您可以使用它们来诊断和调优您的Java虚拟机性能. 1.DisableExplicitGC ...

  7. python实时定位_Python实现命令行监控北京实时公交之一

    开头先放上效果展示 在命令行输入 python bus.py -i,显示app基本信息,如下: 在命令行输入 python bus.py 438,显示北京438路公交车的位置,如下: 红色的B说明在梅 ...

  8. python 抓取 实时公交_Python实现命令行监控北京实时公交之二

    开头先放上效果展示 在命令行输入 python bus.py -i,显示app基本信息,如下: 在命令行输入 python bus.py 438,显示北京438路公交车的位置,如下: 红色的B说明在梅 ...

  9. JVM命令行监控工具之jmap(JVM Memory Map)

    jmap简介 jmap(JVM Memory Map)一方面可以获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况.堆中对象的统 ...

最新文章

  1. react生命周期函数
  2. 从ReLU到GELU,一文概览神经网络的激活函数
  3. 刘烨:家里官方语言是中文 听不懂娘仨说法语
  4. 内存分配,任意字节对齐
  5. Mac隔空投送功能在哪? macbook隔空投送更方便的使用方法
  6. JAVA遇见HTML——JSP篇:JSP内置对象(上)
  7. ubuntu atpdpkg
  8. 【水果识别】基于matlab GUI形态学水果识别(含识别率)【含Matlab源码 907期】
  9. Linux下的shell编程(二)BY 四喜三顺
  10. 从VBA到VSTO的一些想法
  11. 【Web理论篇】Web应用程序安全与风险
  12. 斐讯K2P路由器设置AP模式(大部分路由器通用
  13. Job for DmServiceDMSERVER.service failed because the control process exited with error code. Se
  14. android 判断是否是数字,是否在数字范围内,是否是字母,下一个字母,小写转大写,大写转小写;
  15. 毕业设计-基于SpringBoot幼儿园管理系统
  16. 什么模式下不可使用曝光补偿_摄影从零到入门 曝光模式与测光方法详解
  17. ②号团队【扫黑除恶Team】-团队任务5:项目总结会
  18. 点计算机显示服务器运行失败,win7电脑总是跳出Explorer.exe服务器运行失败的窗口怎么办?...
  19. DSP28335学习之旅2-最小系统
  20. 不懂带团队,你就自己累!教你如何成为顶尖管理者!

热门文章

  1. 年薪6万美元/应届医学博士赴加州大学圣迭戈分校博士后就职
  2. Shiro教程,整合SpringBoot项目实战(笔记)
  3. 最强整理:阿里云大师深入拆解Java虚拟机,经典好文
  4. 计算机科学家事迹,【CCF会员故事】计算机软件科学家谢涛:星辰大海,求思进取...
  5. 区块链10年兴衰录:中国是最好的发展土壤
  6. 2022年项目经理的发展方向-上课解读及心得
  7. 面向对象分析与设计--遛狗玩
  8. thingsboard 规则引擎结点功能总结
  9. 嵌入式基础学习-烧写工具
  10. channel的解析和配置方法