Jstat是JDK自带的一个轻量级工具,主要用JVM内建的指令对java应用程序的资源和性能进行实时的监控。

基本语法

  jstat <option> [-t] [-h] <pid>  <interval> <count>

  参数解释:

  • option   可以从下面参数中选择

    • -class                 显示ClassLoad的相关信息;
    • -compiler           显示JIT编译的相关信息;
    • -gc                     显示和gc相关的堆信息;
    • -gccapacity     显示各个代的容量以及使用情况;
    • -gccause             显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因;
    • -gcnew               显示新生代信息;
    • -gcnewcapacity  显示新生代大小和使用情况;
    • -gcold                 显示老年代和永久代的信息;
    • -gcoldcapacity    显示老年代的大小;
    • -gcpermcapacity 显示永久代的大小;
    • -gcutil             显示垃圾收集信息;
    • -printcompilation输出JIT编译的方法信息;
  • -t         可以在打印的列加上Timestamp列,用于显示系统运行的时间
  • -h     可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
  • interval 执行每次的间隔时间,单位为毫秒
  • count   用于指定输出多少次记录,缺省则会一直打印

  使用说明

  首先我们 使用linux命令 ps -ef|grep resin 查看我要监视进程的pid 23814

  -

  1、-class (jstat -class pid 1000 5 查看pid为23814的ClassLoad相关信息,每秒钟打印一次,总共打印5次)

  

  • Loaded 加载类的数量
  • Bytes 加载类合计大小
  • Unloaded 卸载类的数量
  • Bytes 卸载类合计大小
  • Time 表示加载和卸载类总共的耗时

  加载了9276个类,总大小为18045.9byte 卸载类0个,总大小为0byte,卸载和加载总耗时9.24ms

  2、-compiler (Jstat -cpmpiler pid)

  

  • Compiled 表示编译任务执行的次数
  • Failed 表示编译失败的次数
  • Invalid 表示编译不可用的次数
  • Time 表示编译的总耗时
  • FailedType 表示最后一次编译的类型
  • FailedMethod 表示最后一次编译失败的类名和方法名

  3、-gc (jstat -gc pid 1000 5 )

  

  • S0C: Survivor0(幸存区0)大小(KB)
  • S1C: Survivor1(幸存区1)1大小(KB)
  • S0U: Survivor0(幸存区0)已使用大小(KB)
  • S1U: Survivor1(幸存区1)已使用大小(KB)
  • EC  : Eden(伊甸区)大小(KB)
  • EU  : Eden(伊甸区)已使用大小(KB)
  • OC :老年代大小(KB)
  • OU : 老年代已使用大小(KB)
  • PC : Perm永久代大小(KB)
  • PU : Perm永久代已使用大小(KB)
  • YGC:新生代GC个数
  • YGCT:新生代GC的耗时(秒)
  • FGC  :Full GC次数
  • FGCT:Full GC耗时(秒)
  • GCT :GC总耗时(秒) 

 4、-gccapacity(jstat -gccapacity pid:显示各个代的容量的信息)

  

  • NGCMN:新生代最小值(KB)
  • NGVMX:新生代最大值(KB)
  • NGC:当前新生代大小(KB)
  • S0C:同上
  • S1C:同上
  • EC:同上
  • OGCMN:老年代最小值(KB)
  • OGCMX:老年代最大值(KB)
  • OGC:当前老年代大小(KB)
  • OC:同上
  • PGCMN:永久代最小值(KB)
  • PGCMX:永久代最大值(KB)
  • PGC:当前永久代大小(KB)
  • PC:同上
  • YGC:同上
  • FGC:同上

 5、-gccause(jstat -gccause pid:显示最近一次GC的原因)

  

  • LGCC:上一次GC的原因,是G1垃圾回收器回收
  • GCC :当前GC的原因

 6、-gcnew (jstat -gcnew pid:显示新生代的详细信息)

  

  • TT:新生代到老年代的年龄;
  • MTT:新生代到老年代的最大年龄;
  • DSS:所需的survivor的大小;

  7、-gcnewcapacity(jstat -gcnewcapacity pid:输出新生代各个区的详细信息)

  

  • S0CMX:S0最大空间大小(KB)
  • S1CMX:S1最大空间大小(KB)
  • ECMX:Eden最大空间大小(KB)
  • NGCMX:年轻代最大空间大小(KB)

  8、-gcold(jstat -gcold pid:显示老年代GC的详细情况)

  

 9、-gcoldcapacity(jstat -gcoldcapacitp pid:输出老年代的详细信息)

  

 10、-gcutil(jstat -gcutil pid:查看每个代区域使用的百分比情况)

  

JVM学习之jstat使用方法的更多相关文章

  1. jvm学习(3)方法区、堆、对象存储位置

    方法区 方法区,Method Area, 对于习惯在HotSpot虚拟机上开发和部署程序的开发者来说,很多人愿意把方法区称为“永久代”(Permanent Generation),本质上两者并不等价, ...

  2. JVM学习(4)——全面总结Java的GC算法和回收机制

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的 ...

  3. JVM学习(3)——总结Java内存模型

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 为什么学习Java的内存模式 缓存一致性问题 什么是内存模型 JMM(Java Memory Model)简 ...

  4. Java虚拟机JVM学习07 类的卸载机制

    Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就 ...

  5. Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论

    Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...

  6. Java虚拟机JVM学习04 类的初始化

    Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始 ...

  7. Java虚拟机JVM学习03 连接过程:验证、准备、解析

    Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...

  8. Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  9. Java虚拟机JVM学习01 流程概述

    Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...

随机推荐

  1. Addthis使用

    一.使用 https://www.addthis.com/.国外的SNS分享站点较多,适用于英文站点内容的分享.有教程. 我的测试代码如下: <html> <meta charset ...

  2. 关于AngularJs中的路由学习总结

    AngularJs中的路由,应用比较广泛,主要是允许我们通过不同的url访问不同的内容,可实现多视图的单页web应用.下面看看具体怎么使用. 关于路由  通常我们的URL形式为http://jtjds ...

  3. JAVA 字符串驻留池

    一切从String str = new String("abc")说起...    这行代码形式上很简单,其实很复杂.有一个常见的Java笔试题就是问上面这行代码创建了几个Stri ...

  4. Redis的安装和使用

    Redis 安装redis: 将将要安装redis文件夹放到一个盘中 通过命令行切换到放文件的地方 安装成功后,将文件夹中的扩展放入wamp/php/ext中,然后配置php.ini,重启服务器. 使 ...

  5. 转: 使用Eclipse的Working Set,界面清爽多了

    from: http://iyuanbo.iteye.com/blog/1158136 使用Eclipse的Working Set,界面清爽多了   想必大家的Eclipse里也会有这么多得工程... ...

  6. Entityframework core 动态添加模型实体

    重新DBContext中OnModelCreating protected override void OnModelCreating(ModelBuilder modelBuilder)  { // ...

  7. Mysql备份系列(1)--备份方案总结性梳理

    mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...

  8. 快速编写代码zencode

    #是 id .是class $是数字 {}是标签中内容 *个数 ^上一级

  9. Openvpn 公网访问内网

    对于需要从公网访问内网的情况, 需要做如下配置 从公网到内网 除了设置net.ipv4.ip_forward = 1 以外, 还需要设置iptables, 增加两行forward # Generate ...

  10. 常见HTTP状态基本解释

    本文摘自互联网,但是忘记了具体网址,请见谅 在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Go ...