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. CPU和GPU性能对比

    计算20000次10000点的fft,分别使用CPU和GPU,得 the running time of cpu is : 2.3696s the running time of gpu is : 0 ...

  2. 《2016ThoughtWorks技术雷达峰会----js爆炸下的技术选型》

    JS爆炸下的技术选型  刘尚奇    ThoughtWorks, 高级咨询师 JS每6个星期出现一个新框架,那么如何进行JS的选型.以下从四个方面来分析. 1.工具 NPM for all the t ...

  3. Objective-C基础数据类型-NSSet[转]

    转自GISerYang 集合: 集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址:不过NSArray是有序的集合,NSSet是无序的集合. 集合是一种哈希表,运用散列算法 ...

  4. Codeforces Round #282 Div.1 B Obsessive String --DP

    题意: 给两个串S,T,问能找出多少的S的(a1,b1)(a2,b2)..(ak,bk),使Sa1---Sb1,...Sak---Sbk都包含子串T,其中k>=1,且(a1,b1)...(ak, ...

  5. UIWrapContent(NGUI长列表优化利器)

    NGUI长列表优化利器 优化原理 NGUI3.7.x以上版本 有个新组件 UIWrapContent ,当我们的列表内容很多时,可以进行优化.它不是一次生成全部的child,而是只有固定数量的chil ...

  6. S2结业考试的第一次测验

    错题分析: 1:java中的错误处理是通过异常处理模型来实现的,那么异常处理模块能处理的错误是: A:运行时错误 B:逻辑错误 C:语法错误 D:内部错误 正确答案是:A 解析:运行时异常都是Runt ...

  7. Stunnel使用2

    1.首先测试一下stunnel.exe,是否能正常运行,正常的话,不会报错,在桌面右下角位置显示. 2.第一步完成后,打开stunnel.conf,对stunnel进行配置,需要修改一下几项:(mys ...

  8. Map集合 总结

    (本人第一次写博客,部分内容有参照李刚老师的疯狂java系列图书,如有遗漏错误,请多指教,谢谢.) Java的集合类可分为Set.List.Map.Queue,其中Set.List.Queue都有共同 ...

  9. java实战之解析xml

    在java中解析xml有现成的包提供方法,常用的有四类:Dom,JDom,Sax以及Dom4j.其中前者是java中自带的,后三者需要大家从开源诸如sourceforge这样的网站下载jar包,然后在 ...

  10. int,long,unsigned的值范围

    unsigned   int   0-4294967295   int   2147483648-2147483647 unsigned long 0-4294967295long   2147483 ...