本文共 4495 字,大约阅读时间需要 14 分钟。
使用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程(需要远程主机提供RMI支持)虚拟机进程中的类信息、内存、垃圾收集、JIT编译等运行数据,在没有GUI,只提供了纯文本控制台环境的服务器上,它将是运行期间定位虚拟机性能问题的首选工具。
jstat命令格式
jstat [ option vmid [ interval [ s | ms ] [ count ] ] ]
这个VMID,对于本地虚拟机进程而言,VMID和LVMID是一致的。参数interval和count分别表示查询间隔和次数,如果省略这两个参数,说明只查询一次,假设需要每200毫秒查询一次进程3596的垃圾收集情况,一共查询20次,那命令应当是:
jstat主要选项-class 监视类装载、卸载数量、总空间以及类装载所耗费的时间-gc 监视Java堆状况,包括Eden区、两个Survivor区、、老年代、永久带等的容量、已用空间、GC时间合计等信息-gccapacity 监视内容基本与-gc相同,但输出主要关注Java堆各个区域使用到的最大、最小空间-gcutil 监视内容基本与-gc相同,但输出主要关注已使用的空间占总空间的百分比-gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因-gcnew 监视新生代GC状况-gcnewcapacity 监视内容基本与-gcnew相同,但输出主要关注使用到的最大、最小空间-gcold 监视老年代GC状况-gcoldcapacity 监视内容基本与-gcold相同,但输出主要关注使用到的最大、最小空间-gcpermcapacity 输出永久代使用到的最大、最小空间-compiler 输出JIT编译器编译过的方法、耗时等信息-printcompilation 输出已经被JIT编译的方法
这里的4596,我是通过jps查询
监视类装载、卸载数量、总空间以及类装载所耗费的时间
jstat -class 4596
监视类装载数量:8951总空间:16830.2字节卸载数量:0类装载所耗费的时间:6.45秒
监视Java堆状况,包括Eden区、两个Survivor区、、老年代、永久带等的容量、已用空间、GC时间合计等信息
jstat -gc 4596
S0C:(young gerenation中的from survivor)的总容量:19456.0(字节)S1C:(young gerenation中的to survivor)的总容量:17408.0(字节)S0U:(young gerenation中的from survivor)已经使用的容量:0.0(字节)S1U:(young gerenation中的to survivor)已经使用的容量:17169.6(字节)EC:(young gerenation中的eden)的总容量:360448.0(字节)EU:(young gerenation中的eden)已经使用的容量:35731.5(字节)OC:(old gerenation)的总容量:152576.0(字节)OU:(old gerenation)已经使用的容量:24333.3(字节)MC:(method area)的总容量:47192.0(字节)MU:(method area)已经使用的容量:46250.0(字节)CCSC:压缩类总容量:6242.0(字节)CCSU:压缩类已经使用容量:6232.0(字节)YGC:(young generation)发生GC次数:9YGCT:(young generaton)发生GC使用时间:0.126秒FGC:(Full GC)次数:2FGCT:(Full GC)耗时:0.151GCT:总GC耗时:0.277
监视内容基本与-gc相同,但输出主要关注Java堆各个区域使用到的最大、最小空间
jstat -gccapacity
NGCMN:新生代最小容量:86016.0byteNGCMX:新生代最大容量:1372672.0byteNGC:当前新生代容量:418307.0byteS0C:第一个幸存区大小19456.0byteS1C:第二个幸存区的大小17408.0byteEC:eden区的大小:360448.0byteOGCMN:老年代最小容量:172032.0byteOGCMX:老年代最大容量2745856.0byteOGC:当前老年代大小152576.0byteOC:当前老年代大小152576.0byteMCMN:最小元数据容量0.0byteMCMX:最大元数据容量1089536.0byteMC:当前元数据空间大小47192.0byteCCSMN:最小压缩类空间大小:0.0byteCCSMX:最大压缩类空间大小1048576.0byteCCSC:当前压缩类空间大小6232.0byteYGC:年轻代gc次数:9FGC:老年代GC次数:2
监视内容基本与-gc相同,但输出主要关注已使用的空间占总空间的百分比
jstat -gcutil 4596
新生代Eden区(E,表示Eden)使用了9.25%的空间;两个Survivor区:S0表示Survivor0:0.00%S1表示Survivor1:98.63%O,表示Old(老年代):15.95%程序运行以来共发生Minor GC(YGC,表示Young GC)9次,总共耗时0.126秒;共发生Full GC(FGC,表示Full GC)2次,Full GC共耗时(FGCT,Full GC Time)为0.151秒,所有GC总耗时(GCT,表示GC Time)0.27秒
与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
jstat -gccause 4596
S0:(young generation中的from survivor)占用比例S1:(young generation中的to survivor)占用比例E:(young generation中的eden)占用比例O:(old generation)占用比例M:(method area)占用比例CCS:压缩类占用比例YGC:young gc次数:9YGCT:young gc time:0.126FGC:full gc:2FGCT:full gc time:0.151GCT:gc time:0.277LGCC:最近垃圾回收的原因GCC:当前垃圾回收的原因
监视新生代GC状况
jstat -gcnew -4596
S0C:(young generation的from survivor)总容量19456.0byteS1C:(young generation的to survivor)总容量17408.0byteS0U:(young generation的from survivor)已经使用0.0byteS1U:(young generation的to survivor)已经使用17169.6byteTT:Tenuring threshold(提升阈值)MTT:最大的tenuring thresholdDSS:survivor区域大小 (KB)EC:(young generation的eden)总容量360448.0byteYGC:(young generation发生gc次数):9YGCT:(young generation发生gc耗时):0.126
监视内容基本与-gcnew相同,但输出主要关注使用到的最大、最小空间
jstat -gcnewcapacity 4596
NGCMN:新生代占用最小容量86016.0byteNGCMX:新生代占用最大容量1372672.0byteNGC:新生代当前容量418304.0byteS0CMX:最大的S0空间 457216.0byteS0C:当前S0空间19456.0byteS1CMX:最大S1空间457216.0byteS1C:当前S1空间17408.0byteECMX:最大eden空间1371648.0byteEC:当前eden空间360448.0byteYGC:young gc次数9FGC:full gc次数2
监视老年代GC状况
jstat -gcold 4596
MC:当前方法区容量47192.0byteMU:当前方法区已经使用容量46250.0byteCCSC:压缩类空间容量6232.0byteCCSU:压缩类空间已使用容量5994.7byteOC:当前老年代容量152576.0byteOU:当前老年代已使用容量24333.3byteYGC:young gc次数9FGC:full gc次数2FGCT:full gc time:0.151GCT:gc time:0.277
监视内容基本与-gcold相同,但输出主要关注使用到的最大、最小空间
jstat -gcoldcapacity 4596
OGCMN:old区最小容量172032.0byteOGCMX:old区最大容量2745856.0byteOGC:old当前容量152576.0byteOC:old当前容量152576.0byteYGC:young generation发生gc次数:9FGC:full gc发生gc次数:2FGCT:full gc time:0.151GCT:GC time:0.277
输出JIT编译器编译过的方法、耗时等信息
jstat -compiler 4596
Compiled:编译方法的数量:5528Failed:编译方法失败的数量:7Invalid:编译方法不可用的数量:0Time:编译方法的耗时1.90秒FailedType:编译方法失败类型:1FailedMethod:编译失败的方法:org/springframework/beans/factory/support/ConstructorResolver instantiateUsingFactoryMethod
输出已经被JIT编译的方法
jstat -printcompilation 4596
Compiled:最近编译方法的数量:5528Size:最近编译方法的字节码数量:83Type:最近编译方法的编译类型:1Method:方法名标识:org/apache/tomcat/util/collections/ManagedConcurrentWeakhashMap maintain