当前位置: 代码迷 >> 综合 >> Java常用命令(二)jstat、javap
  详细解决方案

Java常用命令(二)jstat、javap

热度:52   发布时间:2023-12-05 13:52:53.0

一、jstat

jstat用于查看虚拟机各种状态信息。
通常格式为jstat -option pid [interval] [count]:
option:功能选项,用于选择查看不同的状态信息;
pid:进程号;
interval:输出间隔时间;
count:执行次数;

1、jstat -class pid

这里写图片描述
图中Loaded代表类装载数,Unloaded代表类卸载数,两个Bytes分别代表装载卸载类的字节数,最后Time代表装载卸载总耗时。

2、jstat -compiler pid

这里写图片描述
compiled:编译数量; Failed:失败数量; Invalid:失效数量; Time:编译耗时;
FailedType:失败类型; FailedMethod:失败任务所在类及方法

3、jstat -gc pid

这里写图片描述
图中添加了间隔执行时间及执行次数。
S0C、S1C:两块survivor区大小;S0U、S1U:两块区域已使用大小;EC、EU:Eden区大小及已使用大小;OC、OU:老年代大小及使用大小;MC、MU:元空间大小及使用大小;CCSC、CCSU:压缩类大小及已使用大小(对象头中压缩指针指向的元空间大小,文档上的注释如图:)
这里写图片描述
YGC、YGCT:年轻代gc次数及时间;FGC、FGCT:full gc次数及时间;GCT:总gc时间

4、jstat -gccapacity pid

显示JVM内存使用情况:
这里写图片描述
NGCMN:年轻代空间最小值;NGCMX:年轻代空间最大值;NGC:年轻代当前空间大小;
S0C、S1C、EC:survivor区两块空间及Eden区的当前大小;
OGCMN、OGCMX:老年代空间最小值及最大值;OGC:老年代当前新生成空间大小;OC:老年代空间大小;MCMX、MCMX、MC:分别代表元空间最小值、最大值、当前值;
CCSMN、CCSMX、CCSC:压缩类空间最小值、最大值、当前值;YGC:年轻代gc次数;FGC:full gc次数;

5、jstat -gcutil pid

这里写图片描述
S0、S1、E、O、M、CCS:分别代表两块survivor区、Eden区、Old区、元空间、压缩类空间已使用大小占当前空间总大小的比值。YGC、YGCT:年轻代gc次数及时间;FGC、GFCT:gull gc次数及时间;GCT:总gc时间。

6、jstat -gcnew pid

这里写图片描述
这里仅TT、MTT、DSS与前文不同,所以进介绍这三个值,下文同理,不再声明。
TT:对象在新生代存活的次数;
MTT:对象在新生代存活的最大次数;
DSS:期望的幸存区大小;

7、jstat -gcnewcapacity pid

这里写图片描述
列出项含义见上文。

8、jstat -gcold pid

这里写图片描述
列出项含义见上文。

9、jstat -gcoldcapacity pid

这里写图片描述

10、jstat -gcpermcapacity pid与 jstat -gcmetacapacity pid

1.8移除了永久区,没gcpermcapacity这个参数了,取而代之的是元空间,因此使用gcmetacapacity
这里写图片描述

11、jstat -printcompilation pid

这里写图片描述
compiled:已编译的数目;
size:最近编译的方法字节码大小;
Type:编译类型;
Method:编译的方法;

二、javap

用于class文件的反编译

1、javap xx

列出项含义见上文。
注:命令行在class文件所在目录打开才能反编译。或者在bin目录下打开,使用时输入全类名(即包含类名)。

2、javap -c xx

列出项含义见上文。
-c参数可以查看每个方法具体的字节码指令。
还有不少参数就不一一尝试了,附javap -help一张:
这里写图片描述

  相关解决方案