java性能检测jstat

-XX:+PrintCommandLineFlags 查看程序使用的默认JVM参数

其中,默认是-XX:InitialHeapSize=2147483648 -XX:MaxHeapSize=27913093120,默认是字节B,

InitialHeapSize 等于 xms,为2147483648/(1024*1024)=2048M

MaxHeapSize 等于xmx为27913093120/(1024*1024)=26620M

-XX:InitialHeapSize=2147483648 -XX:MaxHeapSize=27913093120 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.6.RELEASE)
 

Xms与InitialHeapSize

Xms等价于InitialHeapSize,表示Heap的初始化大小,即JVM启动时,堆区的最小值,使用该参数的正确姿势是:

-Xms10m

-XX:InitialHeapSize=10m

一、jstat

可以通过JConsole查看概要,之后通过jstat具体查看堆信息,如eden区为179200KB

jstat 即Java Virtual Machine statistics(统计)  monitoring(监听)  tool,可用来观察java应用程序运行时的相关信息的工具,可通过它来观察  堆信息的详细情况。 一定需要进程ID号,即 <vmid>

C:\Users\cmcc>jstat
invalid argument count
Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

  • option: 参数选项
  • -t: 可以在打印的列加上Timestamp列,用于显示系统运行的时间
  • -h: 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
  • vmid: Virtual Machine ID( 进程的 pid)
  • interval: 执行每次的间隔时间,单位为毫秒
  • count: 用于指定输出多少次记录,缺省则会一直打印

heap 堆、  capacity 容量; 容积、 permanent 永久的、 eden 伊甸园、tenured 终身的; 长期保有的;

可通过jstat -options 

C:\Users\cmcc>jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation

  • option: 参数选项

-class:统计class loader行为信息 
-compiler:统计编译行为信息 
-gc:统计jdk gc时heap信息 
-gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况 
-gccause:统计gc的情况,(同-gcutil)和引起gc的事件 
-gcnew:统计gc时,新生代的情况 
-gcnewcapacity:统计gc时,新生代heap容量 
-gcold:统计gc时,老年区的情况 
-gcoldcapacity:统计gc时,老年区heap容量 
-gcpermcapacity:统计gc时,permanent区heap容量 
-gcutil:统计gc时,heap情况 

输出:

实例1:

jstat -gcnew  -t  12140 1000  2    表示统计gc时,新生代的情况,进程为12140,每隔1秒统计一次,一共统计2次。

Timestamp        S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC
     YGCT
          491.8 38400.0 26112.0    0.0 25866.8  6  15 38400.0 192512.0  10719.5
     5    0.166
          492.9 38400.0 26112.0    0.0 25866.8  6  15 38400.0 192512.0  10719.5
     5    0.166


实例2、

C:\Users\cmcc>jstat -class 12140
Loaded  Bytes  Unloaded  Bytes     Time
  4818 10653.1        0     0.0      11.85

  • Loaded : 已经装载的类的数量
  • Bytes : 装载类所占用的字节数
  • Unloaded:已经卸载类的数量
  • Bytes:卸载类的字节数
  • Time:装载和卸载类所花费的时间

实例3、-compiler

C:\Users\cmcc>jstat -compiler 12140
Compiled Failed Invalid   Time   FailedType FailedMethod
    3495      0       0    19.68          0

  • Compiled:编译任务执行数量
  • Failed:编译任务执行失败数量
  • Invalid :编译任务执行失效数量
  • Time :编译任务消耗时间
  • FailedType:最后一个编译失败任务的类型
  • FailedMethod:最后一个编译失败任务所在的类及方法

实例4 -gc  ,因本地为jdk8,故为元数据,非永久区

C:\Users\cmcc>jstat -gc 12140
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU
   CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
38400.0 26112.0  0.0   25866.8 192512.0 70273.4   262144.0   14422.4   34608.0 3
3784.3 3888.0 3652.1      5    0.166   1      0.122    0.288

  • S0C:年轻代中第一个survivor(幸存区)的容量 (KB)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (KB)
  • S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (KB)
  • S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (KB)
  • EC :年轻代中Eden(伊甸园)的容量 (KB)
  • EU :年轻代中Eden(伊甸园)目前已使用空间 (KB)
  • OC :Old代的容量 (KB)
  • OU :Old代目前已使用空间 (KB)
  • MC:metaspace(元空间)的容量 (KB)
  • MU:metaspace(元空间)目前已使用空间 (KB)
  • YGC :从应用程序启动到采样时年轻代中gc次数
  • YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
  • FGC :从应用程序启动到采样时old代(全gc)gc次数
  • FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小


C:\Users\cmcc>jstat -gccapacity 12140
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC
       OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC

262144.0 262144.0 262144.0 38400.0 41472.0 179200.0   262144.0   262144.0   2621
44.0   262144.0      0.0 1081344.0  35496.0      0.0 1048576.0   4016.0      6
   2

输出说明:

NGCMN:新生代最小值(KB)

NGCMX:新生代最大值(KB)

NGC:当前新生代大小(KB)

OGCMN:老年代最小值

OGCMX:老年代最大值

OGC:老年代大小

OC:老年代容量

  • MCMN:metaspace(元空间)中初始化(最小)的大小 (KB)
  • MCMX :metaspace(元空间)的最大容量 (KB)
  • MC :metaspace(元空间)当前新生成的容量 (KB)
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC :从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数


C:\Users\cmcc>jstat -gccause 12140
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
  LGCC                 GCC
  0.00   0.00  61.47   6.68  97.37  92.76      6    2.824     2    7.022    9.84
6 Metadata GC Threshold No GC

  • LGCC:最后一次GC原因
  • GCC:当前GC原因(No GC 为当前没有执行GC)

输出说明:

3.3   输出参数内容 
S0  — Heap上的 Survivor space 0 区已使用空间的百分比 
S0C:S0当前容量的大小 
S0U:S0已经使用的大小 
S1  — Heap上的 Survivor space 1 区已使用空间的百分比 
S1C:S1当前容量的大小 
S1U:S1已经使用的大小 
E   — Heap上的 Eden space 区已使用空间的百分比 
EC:Eden space当前容量的大小 
EU:Eden space已经使用的大小 
O   — Heap上的 Old space 区已使用空间的百分比 
OC:Old space当前容量的大小 
OU:Old space已经使用的大小 
P   — Perm space 区已使用空间的百分比 
PC:Perm space当前容量的大小 
PU:Perm space已经使用的大小 

  • MC:metaspace(元空间)的容量 (KB)
  • MU:metaspace(元空间)目前已使用空间 (KB)
  • TT:新生代对象晋升到老年代对象的年龄
  • MTT:新生代对象晋升到老年代对象的年龄最大值
  • DSS:所需的survivor区大小

YGC — 从应用程序启动到采样时发生 Young GC 的次数 
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒) 
FGC — 从应用程序启动到采样时发生 Full GC 的次数 
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒) 
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC

实例5 -gcnewcapacity 年轻代对象的信息及其占用量


C:\Users\cmcc>jstat -gcnewcapacity 12140
  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX
    EC      YGC   FGC
  262144.0   262144.0   262144.0  87040.0  38400.0  87040.0  41472.0   261120.0
  179200.0     6     2

S0CMX:s0区最大值

S1CMX:s1区最大值

YGC:新生代GC次数

实例6:-gcold  展现老年代的GC概况

C:\Users\cmcc>jstat -gcold 12140
   MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT
    GCT
 35496.0  34561.4   4016.0   3725.3    262144.0     17503.0      6     2    7.02
2    9.846

实例7: -gcoldcapacity 展现老年代的容量信息

C:\Users\cmcc>jstat -gcoldcapacity 12140
   OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
   262144.0    262144.0    262144.0    262144.0     6     2    7.022    9.846

实例8:-gcutil 展示GC回收相关情况

C:\Users\cmcc>jstat -gcutil 12140
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT

  0.00   0.00  87.18   6.68  97.37  92.76      6    2.824     2    7.022    9.84
6

S0:S0区使用的百分比

S1:S1区使用百分比

E:eden区使用百分比

O:old区使用百分比

M:元数据区使用百分比
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值