zoukankan      html  css  js  c++  java
  • JDK常用命令(一)jps、jstat

      曾几何时,我们学习java都不再研究jdk而直接使用IDEA、eclipse和Netbeans,仿佛我们就认为我们的程序是这些编辑器编译出来的,这时多么可笑。殊不知,编辑器就是方便我们编辑开发的,而真正编译、调试在起作用的仍然是JDK,编辑器进行非编辑操作时底层就是在调用JDK中的命令。以下命令只存在于JDK中,JRE中是没有的哦。

    bin

    描述

    功能

    jps

    打印Hotspot VM进

    VMID、JVM参数、main()函数参数、主类名/Jar路径

    jstat

    查看Hotspot VM 运行时信息

    类加载、内存、GC[可分代查看]、JIT编译

    命令格式:jstat -gc 10340 250 20

    jinfo

    查看和修改虚拟机各项配置

    -flag name=value

    jmap

    heapdump: 生成VM堆转储快照、查询finalize执行队列、Java堆和永久代详细信息

    jmap -dump:live,format=b,file=heap.bin [VMID]

    jstack

    查看VM当前时刻的线程快照: 当前VM内每一条线程正在执行的方法堆栈集合

    Thread.getAllStackTraces()提供了类似的功能

    javap

    查看经javac之后产生的JVM字节码代码

    自动解析.class文件, 避免了去理解class文件格式以及手动解析class文件内容

    jcmd

    一个多功能工具, 可以用来导出堆, 查看Java进程、导出线程信息、 执行GC、查看性能相关数据等

    几乎集合了jps、jstat、jinfo、jmap、jstack所有功能

    jconsole

    基于JMX的可视化监视、管理工具

    可以查看内存、线程、类、CPU信息, 以及对JMX MBean进行管理

    jvisualvm

    JDK中最强大运行监视和故障处理工具

    可以监控内存泄露、跟踪垃圾回收、执行时内存分析、CPU分析、线程分析…

    一、jps

    1、jps 

    显示线程id和执行线程主类名

    2、jps - l

    显示线程id和执行线程的主类名的全路径

    3、jps -m

    显示线程id和执行线程的主类名及其参数

    4、jps -v

    显示线程id和执行线程的主类名和JVM配置信息

    二、jstat

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

    option

     1 -class             显示ClassLoad的相关信息;
     2 -compiler          显示JIT编译的相关信息;
     3 -gc                显示和gc相关的堆信息;
     4 -gccapacity      显示各个代的容量以及使用情况;
     5 -gccause           显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因;
     6 -gcnew             显示新生代信息;
     7 -gcnewcapacity     显示新生代大小和使用情况;
     8 -gcold             显示老年代和永久代的信息;
     9 -gcoldcapacity     显示老年代的大小;
    10 -gcpermcapacity    显示永久代的大小;
    11 -gcutil          显示垃圾收集信息;   
    12 -printcompilation  输出JIT编译的方法信息;

    -t      可以在打印的列加上Timestamp列,用于显示系统运行的时间
    -h  可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
    interval   执行每次的间隔时间,单位为毫秒
    count     用于指定输出多少次记录,缺省则会一直打印

    以下为各种option对应的结果详解

    1、-class

    jstat -class pid 1000 5 

    查看pid为23814的ClassLoad相关信息,每秒钟打印一次,总共打印5次

    1 Loaded 加载类的数量
    2 Bytes 加载类合计大小
    3 Unloaded 卸载类的数量
    4 Bytes 卸载类合计大小
    5 Time 表示加载和卸载类总共的耗时

    2、-compiler

    jstat -cpmpiler pid 

    查看编译情况

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

    3、-gc

    jstat -gc pid 

    查看垃圾回收状况

     

     1 S0C: Survivor0(幸存区0)大小(KB)
     2 S1C: Survivor1(幸存区1)1大小(KB)
     3 S0U: Survivor0(幸存区0)已使用大小(KB)
     4 S1U: Survivor1(幸存区1)已使用大小(KB)
     5 EC  : Eden(伊甸区)大小(KB)
     6 EU  : Eden(伊甸区)已使用大小(KB)
     7 OC :老年代大小(KB)
     8 OU : 老年代已使用大小(KB)
     9 MC : 方法区大小(KB)
    10 MU : 方法区使用大小(KB)
    11 CCSC : 压缩类空间大小(KB)
    12 CCSU : 压缩类空间使用大小(KB)
    13 YGC:新生代GC个数
    14 YGCT:新生代GC的耗时(秒)
    15 FGC  :Full GC次数
    16 FGCT:Full GC耗时(秒)
    17 GCT :GC总耗时(秒) 

    4、-gccapacity

    jstat -gccapacity pid 

    显示各个代的容量的信息

     1 NGCMN:新生代最小容量(KB)
     2 NGCMX:新生代最大容量(KB)
     3 NGC:当前新生代容量(KB)
     4 S0C:第一个幸存区大小(KB)
     5 S1C:第二个幸存区的大小(KB)
     6 EC:伊甸园区的大小(KB)
     7 OGCMN:老年代最小容量(KB)
     8 OGCMX:老年代最大容量(KB)
     9 OGC:当前老年代大小(KB)
    10 OC:当前老年代大小(KB)
    11 MCMN:最小元数据容量(KB)
    12 MCMX:最大元数据容量(KB)
    13 MC:当前元数据空间大小(KB)
    14 CCSMN:最小压缩类空间大小(KB)
    15 CCSMX:最大压缩类空间大小(KB)
    16 CCSC:当前压缩类空间大小(KB)
    17 YGC:年轻代gc次数(KB)
    18 FGC:老年代GC次数(KB)

    5、-gccause

     jstat -gccause pid

    显示最近一次GC的原因

     

     1 S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比         
     2 S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
     3 E:eden区已使用的占当前容量百分比      
     4 O:old代已使用的占当前容量百分比
     5 M:当前元数据空间所占百分比
     6 CCS:当前压缩类空间所占百分比
     7 YGC:从应用程序启动到采样时年轻代中gc次数         
     8 YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)         
     9 FGC:从应用程序启动到采样时old代(全gc)gc次数         
    10 FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
    11 LGCC:上一次GC的原因,是G1垃圾回收器回收
    12 GCC :当前GC的原因

    6、-gcnew

    jstat -gcnew pid

    显示新生代的详细信息 

     1 S0C:第一个幸存区大小
     2 S1C:第二个幸存区的大小
     3 S0U:第一个幸存区的使用大小
     4 S1U:第二个幸存区的使用大小
     5 TT:对象在新生代存活的次数
     6 MTT:对象在新生代存活的最大次数
     7 DSS:期望的幸存区大小
     8 EC:伊甸园区的大小
     9 EU:伊甸园区的使用大小
    10 YGC:年轻代垃圾回收次数
    11 YGCT:年轻代垃圾回收消耗时间

    7、-gcnewcapacity

    jstat -gcnewcapacity pid

    输出新生代各个区的详细信息

     

     1 NGCMN:新生代最小容量
     2 NGCMX:新生代最大容量
     3 NGC:当前新生代容量
     4 S0CMX:最大幸存1区大小
     5 S0C:当前幸存1区大小
     6 S1CMX:最大幸存2区大小
     7 S1C:当前幸存2区大小
     8 ECMX:最大伊甸园区大小
     9 EC:当前伊甸园区大小
    10 YGC:年轻代垃圾回收次数
    11 FGC:老年代回收次数

    8、-gcold

    jstat -gcold pid

    显示老年代GC的详细情况

     

     1 MC:方法区大小
     2 MU:方法区使用大小
     3 CCSC:压缩类空间大小
     4 CCSU:压缩类空间使用大小
     5 OC:老年代大小
     6 OU:老年代使用大小
     7 YGC:年轻代垃圾回收次数
     8 FGC:老年代垃圾回收次数
     9 FGCT:老年代垃圾回收消耗时间
    10 GCT:垃圾回收消耗总时间

    9、-gcoldcapacity

    jstat -gcoldcapacitp pid

    输出老年代的详细信息

     

    1 OGCMN:老年代最小容量
    2 OGCMX:老年代最大容量
    3 OGC:当前老年代大小
    4 OC:老年代大小
    5 YGC:年轻代垃圾回收次数
    6 FGC:老年代垃圾回收次数
    7 FGCT:老年代垃圾回收消耗时间
    8 GCT:垃圾回收消耗总时间

    10、-gcutil

    jstat -gcutil pid

    查看每个代区域使用的百分比情况 

     

     1 S0:幸存1区当前使用比例
     2 S1:幸存2区当前使用比例
     3 E:伊甸园区使用比例
     4 O:老年代使用比例
     5 M:元数据区使用比例
     6 CCS:压缩使用比例
     7 YGC:年轻代垃圾回收次数
     8 FGC:老年代垃圾回收次数
     9 FGCT:老年代垃圾回收消耗时间
    10 GCT:垃圾回收消耗总时间
  • 相关阅读:
    SQLServer和Access数据传输简单总结
    Session 详解
    SQL日志文件过大问题的解决方法
    如何删除表中的重复记录?
    HDOJ 3711 Binary Number
    HDOJ 2022
    活动选择问题
    浮点数的比较
    HDOJ 2037
    找最长递增子数列
  • 原文地址:https://www.cnblogs.com/guanghe/p/10530146.html
Copyright © 2011-2022 走看看