Java中jstat命令的使用詳解
jstat命令簡介
jstat(Java Virtual Machine Statistics Monitoring Tool)是JDK提供的一個(gè)可以監(jiān)控Java虛擬機(jī)各種運(yùn)行狀態(tài)信息的命令行工具。它可以顯示Java虛擬機(jī)中的類加載、內(nèi)存、垃圾收集、即時(shí)編譯等運(yùn)行狀態(tài)的信息。
jstat命令參數(shù)
命令語法:
jstat generalOptions
jstat outputOptions [-t] [-h<lines>] <vmid> [<interval> [<count>]]
命令參數(shù)說明:
- generalOptions:通用選項(xiàng),如果指定一個(gè)通用選項(xiàng),就不能指定任何其他選項(xiàng)或參數(shù)。它包括如下兩個(gè)選項(xiàng):
- -help:顯示幫助信息。
- -options:顯示outputOptions參數(shù)的列表。
- outputOptions:輸出選項(xiàng),指定顯示某一種Java虛擬機(jī)信息。
- -t:把時(shí)間戳列顯示為輸出的第一列。這個(gè)時(shí)間戳是從Java虛擬機(jī)的開始運(yùn)行到現(xiàn)在的秒數(shù)。
- -h n:每顯示n行顯示一次表頭,其中n為正整數(shù)。默認(rèn)值為 0,即僅在第一行數(shù)據(jù)顯示一次表頭。
- vmid:虛擬機(jī)唯一ID(LVMID,Local Virtual Machine Identifier),如果查看本機(jī)就是Java進(jìn)程的進(jìn)程ID。
- interval:顯示信息的時(shí)間間隔,單位默認(rèn)毫秒。也可以指定秒為單位,比如:1s。如果指定了該參數(shù),jstat命令將每個(gè)這段時(shí)間顯示一次統(tǒng)計(jì)信息。
- count:顯示數(shù)據(jù)的次數(shù),默認(rèn)值是無窮大,這將導(dǎo)致jstat命令一直顯示統(tǒng)計(jì)信息,直到目標(biāo)JVM終止或jstat命令終止。
輸出選項(xiàng)
如果不指定通用選項(xiàng)(generalOptions),則可以指定輸出選項(xiàng)(outputOptions)。輸出選項(xiàng)決定jstat命令顯示的內(nèi)容和格式,具體如下:
- -class:顯示類加載、卸載數(shù)量、總空間和裝載耗時(shí)的統(tǒng)計(jì)信息。
- -compiler:顯示即時(shí)編譯的方法、耗時(shí)等信息。
- -gc:顯示堆各個(gè)區(qū)域內(nèi)存使用和垃圾回收的統(tǒng)計(jì)信息。
- -gccapacity:顯示堆各個(gè)區(qū)域的容量及其對應(yīng)的空間的統(tǒng)計(jì)信息。
- -gcutil:顯示有關(guān)垃圾收集統(tǒng)計(jì)信息的摘要。
- -gccause:顯示關(guān)于垃圾收集統(tǒng)計(jì)信息的摘要(與-gcutil相同),以及最近和當(dāng)前垃圾回收的原因。
- -gcnew:顯示新生代的垃圾回收統(tǒng)計(jì)信息。
- -gcnewcapacity:顯示新生代的大小及其對應(yīng)的空間的統(tǒng)計(jì)信息。
- -gcold: 顯示老年代和元空間的垃圾回收統(tǒng)計(jì)信息。
- -gcoldcapacity:顯示老年代的大小統(tǒng)計(jì)信息。
- -gcmetacapacity:顯示元空間的大小的統(tǒng)計(jì)信息。
- -printcompilation:顯示即時(shí)編譯方法的統(tǒng)計(jì)信息。
jstat命令的顯示輸出被格式化為一個(gè)表,列用空格分隔。接下來,我來了解一下每條輸出選項(xiàng)的列名。
-class選項(xiàng)
- Loaded:加載的類的數(shù)量。
- Bytes:加載的類所占用的字節(jié)數(shù)。
- Unloaded:卸載的類的數(shù)量。
- Bytes:卸載的類所占用的字節(jié)數(shù)。
- Time:執(zhí)行類加載和卸載操作所花費(fèi)的時(shí)間。
舉個(gè)例子:

-compiler選項(xiàng)
- Compiled:執(zhí)行的編譯任務(wù)的數(shù)量。
- Failed:執(zhí)行編譯任務(wù)失敗的數(shù)量。
- Invalid:執(zhí)行編譯任務(wù)失效的數(shù)量。
- Time:執(zhí)行編譯任務(wù)所花費(fèi)的時(shí)間。
- FailedType:上次編譯失敗的編譯類型。
- FailedMethod:上次編譯失敗的類名和方法。
舉個(gè)例子:

-gc選項(xiàng)
- S0C:年輕代中第一個(gè)Survivor區(qū)的容量,單位為KB。
- S1C:年輕代中第二個(gè)Survivor區(qū)的容量,單位為KB。
- S0U:年輕代中第一個(gè)Survivor區(qū)已使用大小,單位為KB。
- S1U:年輕代中第二個(gè)Survivor區(qū)已使用大小,單位為KB。
- EC:年輕代中Eden區(qū)的容量,單位為KB。
- EU:年輕代中Eden區(qū)已使用大小,單位為KB。
- OC:老年代的容量,單位為KB。
- OU:老年代已使用大小,單位為KB。
- MC:元空間的容量,單位為KB。
- MU:元空間已使用大小,單位為KB。
- CCSC:壓縮類的容量,單位為KB。
- CCSU:壓縮類已使用大小,單位為KB。
- YGC:Young GC的次數(shù)。
- YGCT:Young GC所用的時(shí)間。
- FGC:Full GC的次數(shù)。
- FGCT:Full GC的所用的時(shí)間。
- GCT:GC的所用的總時(shí)間。
舉個(gè)例子:

-gccapacity選項(xiàng)
- NGCMN:年輕代最小的容量,單位為KB。
- NGCMX:年輕代最大的容量,單位為KB。
- NGC:當(dāng)前年輕代的容量,單位為KB。
- S0C:年輕代中第一個(gè)Survivor區(qū)的容量,單位為KB。
- S1C:年輕代中第二個(gè)Survivor區(qū)的容量,單位為KB。
- EC:年輕代中Eden區(qū)的容量,單位為KB。
- OGCMN:老年代最小的容量,單位為KB。
- OGCMX:老年代最大的容量,單位為KB。
- OGC:當(dāng)前老年代的容量,單位為KB。
- OC:當(dāng)前老年代的容量,單位為KB。
- MCMN:元空間最小的容量,單位為KB。
- MCMX:元空間最大的容量,單位為KB。
- MC:當(dāng)前元空間的容量,單位為KB。
- CCSMN:壓縮類最小的容量,單位為KB。
- CCSMX:壓縮類最大的容量,單位為KB。
- CCSC:當(dāng)前壓縮類的容量,單位為KB。
- YGC:Young GC的次數(shù)。
- FGC:Full GC的次數(shù)。
舉個(gè)例子:

-gcutil選項(xiàng)
- S0:年輕代中第一個(gè)Survivor區(qū)使用大小占當(dāng)前容量的百分比。
- S1:年輕代中第二個(gè)Survivor區(qū)使用大小占當(dāng)前容量的百分比。
- E:Eden區(qū)使用大小占當(dāng)前容量的百分比。
- O:老年代使用大小占當(dāng)前容量的百分比。
- M:元空間使用大小占當(dāng)前容量的百分比。
- CCS:壓縮類使用大小占當(dāng)前容量的百分比。
- YGC:Young GC的次數(shù)。
- YGCT:Young GC所用的時(shí)間。
- FGC:Full GC的次數(shù)。
- FGCT:Full GC的所用的時(shí)間。
- GCT:GC的所用的總時(shí)間。
舉個(gè)例子:

-gccause選項(xiàng)
- S0:年輕代中第一個(gè)Survivor區(qū)使用大小占當(dāng)前容量的百分比。
- S1:年輕代中第二個(gè)Survivor區(qū)使用大小占當(dāng)前容量的百分比。
- E:Eden區(qū)使用大小占當(dāng)前容量的百分比。
- O:老年代使用大小占當(dāng)前容量的百分比。
- M:元空間使用大小占當(dāng)前容量的百分比。
- CCS:壓縮類使用大小占當(dāng)前容量的百分比。
- YGC:Young GC的次數(shù)。
- YGCT:Young GC所用的時(shí)間。
- FGC:Full GC的次數(shù)。
- FGCT:Full GC的所用的時(shí)間。
- GCT:GC的所用的總時(shí)間。
- LGCC:上次垃圾回收的原因。
- GCC:當(dāng)前垃圾回收的原因。
舉個(gè)例子:

-gcnew選項(xiàng)
- S0C:年輕代中第一個(gè)Survivor區(qū)的容量,單位為KB。
- S1C:年輕代中第二個(gè)Survivor區(qū)的容量,單位為KB。
- S0U:年輕代中第一個(gè)Survivor區(qū)已使用大小,單位為KB。
- S1U:年輕代中第二個(gè)Survivor區(qū)已使用大小,單位為KB。
- TT:對象在年輕代存活的次數(shù)。
- MTT:對象在年輕代存活的最大次數(shù)
- DSS:期望的Survivor區(qū)大小,單位為KB。
- EC:年輕代中Eden區(qū)的容量,單位為KB。
- EU:年輕代中Eden區(qū)已使用大小,單位為KB。
- YGC:Young GC的次數(shù)。
- YGCT:Young GC所用的時(shí)間。
舉個(gè)例子:

-gcnewcapacity選項(xiàng)
- NGCMN:年輕代最小的容量,單位為KB。
- NGCMX:年輕代最大的容量,單位為KB。
- NGC:當(dāng)前年輕代的容量,單位為KB。
- S0CMX:年輕代中第一個(gè)Survivor區(qū)最大的容量,單位為KB。
- S0C:年輕代中第一個(gè)Survivor區(qū)的容量,單位為KB。
- S1CMX:年輕代中第二個(gè)Survivor區(qū)最大的容量,單位為KB。
- S1C:年輕代中第二個(gè)Survivor區(qū)的容量,單位為KB。
- ECMX:年輕代中Eden區(qū)最大的容量,單位為KB。
- EC:年輕代中Eden區(qū)的容量,單位為KB。
- YGC:Young GC的次數(shù)。
- FGC:Full GC的次數(shù)。
舉個(gè)例子:

-gcold選項(xiàng)
- MC:元空間的容量,單位為KB。
- MU:元空間已使用大小,單位為KB。
- CCSC:壓縮類的容量,單位為KB。
- CCSU:壓縮類已使用大小,單位為KB。
- OC:老年代的容量,單位為KB。
- OU:老年代已使用大小,單位為KB。
- YGC:Young GC的次數(shù)。
- FGC:Full GC的次數(shù)。
- FGCT:Full GC的所用的時(shí)間。
- GCT:GC的所用的總時(shí)間。
舉個(gè)例子:

-gcoldcapacity選項(xiàng)
- OGCMN:老年代最小的容量,單位為KB。
- OGCMX:老年代最大的容量,單位為KB。
- OGC:當(dāng)前老年代的容量,單位為KB。
- OC:當(dāng)前老年代的容量,單位為KB。
- YGC:Young GC的次數(shù)。
- FGC:Full GC的次數(shù)。
- FGCT:Full GC的所用的時(shí)間。
- GCT:GC的所用的總時(shí)間。
舉個(gè)例子:

-gcmetacapacity選項(xiàng)
- MCMN:元空間最小的容量,單位為KB。
- MCMX:元空間最大的容量,單位為KB。
- MC:當(dāng)前元空間的容量,單位為KB。
- CCSMN:壓縮類最小的容量,單位為KB。
- CCSMX:壓縮類最大的容量,單位為KB。
- YGC:Young GC的次數(shù)。
- FGC:Full GC的次數(shù)。
- FGCT:Full GC的所用的時(shí)間。
- GCT:GC的所用的總時(shí)間。
舉個(gè)例子:

-printcompilation選項(xiàng)
Compiled:最近編譯方法執(zhí)行的編譯任務(wù)的數(shù)量。
Size:最近編譯方法的字節(jié)碼的字節(jié)數(shù)。
Type:最近編譯方法的編譯類型。
Method:最近編譯方法的類名和方法名。
舉個(gè)例子:

附實(shí)例使用:統(tǒng)計(jì)gc信息

各列意義:
S0C:年輕代中第一個(gè)存活區(qū)的大小
S1C:年輕代中第二個(gè)存活區(qū)的大小
S0U:年輕代中第一個(gè)存活區(qū)已使用的空間 (字節(jié))
S1U:年輕代中第二個(gè)存活區(qū)已使用的空間 (字節(jié))
EC: Edem區(qū)大小
EU: 年輕代中Edem區(qū)已使用的空間 (字節(jié))
OC: 老年代大小
OU: 老年代已使用的空間 (字節(jié))
PC: 持久代大小
PU: 持久代已使用的空間 (字節(jié))
YGC: 從應(yīng)用程序啟動到采樣時(shí)young gc的次數(shù)
YGCT: 從應(yīng)用程序啟動到采樣時(shí)young gc的所用的時(shí)間(s)
FGC: 從應(yīng)用程序啟動到采樣時(shí)full gc的次數(shù)
FGCT: 從應(yīng)用程序啟動到采樣時(shí)full gc的所用的時(shí)間
GCT: 從應(yīng)用程序啟動到采樣時(shí)整個(gè)gc所用的時(shí)間
如果young gc所用的時(shí)間比較長,如幾秒幾十秒,則肯定不正常。
# jstat -gcutil 25444
S0 S1 E O P YGC YGCT FGC FGCT GCT 11.63 0.00 56.46 66.92 98.49 162 0.248 6 0.331 0.579

總結(jié)
到此這篇關(guān)于Java中jstat命令使用的文章就介紹到這了,更多相關(guān)Java jstat命令使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Spring中@Valid和@Validated注解用法
本文將以新增一個(gè)員工為功能切入點(diǎn),以常規(guī)寫法為背景,慢慢烘托出?@Valid?和?@Validated?注解用法詳解,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-07-07
Spring Security使用權(quán)限注解實(shí)現(xiàn)精確控制
在現(xiàn)代的應(yīng)用系統(tǒng)中,權(quán)限管理是確保系統(tǒng)安全性的重要環(huán)節(jié),Spring Security作為Java世界最為普及的安全框架,提供了強(qiáng)大而靈活的權(quán)限控制功能,這篇文章將深入探討Spring Security使用權(quán)限注解實(shí)現(xiàn)精確控制,需要的朋友可以參考下2024-12-12
java 將 list 字符串用逗號隔開拼接字符串的多種方法
這篇文章主要介紹了java 將 list 字符串用逗號隔開拼接字符串,本文給大家分享四種方法,每種方法通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
給JavaBean賦默認(rèn)值并且轉(zhuǎn)Json字符串的實(shí)例
這篇文章主要介紹了給JavaBean賦默認(rèn)值并且轉(zhuǎn)Json字符串的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringCloud Feign如何在遠(yuǎn)程調(diào)用中傳輸文件
這篇文章主要介紹了SpringCloud Feign如何在遠(yuǎn)程調(diào)用中傳輸文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

