參考:《深入理解JVM——高級(jí)特性與最佳實(shí)踐》
一、概述
- jsp 顯示指定系統(tǒng)內(nèi)所有的HotSpot虛擬機(jī)進(jìn)程
- jstat 用于手機(jī)hotSpot虛擬機(jī)個(gè)方面的運(yùn)行數(shù)據(jù)
- jinfo 顯示虛擬機(jī)配置信息
- jmap 生成虛擬機(jī)的內(nèi)存快照(heapdump文件)
- jhat 分析heapdump,建立一個(gè)HTTP/HTML服務(wù)器,讓用戶在瀏覽器上查看結(jié)果(少用)
- jstack 顯示線程快照(threadDump文件或javacore文件),定位線程出現(xiàn)長(zhǎng)時(shí)間停頓的原因
二、詳細(xì)解析
jps [option] [hostId]
jsp -q 只輸出LVMID
jps -m 只輸出啟動(dòng)時(shí)傳給主類mian()參數(shù)
jps -l 輸出主類全名,如果進(jìn)程執(zhí)行的是jar包,輸出jar路徑
jps -v 虛擬機(jī)進(jìn)程啟動(dòng)時(shí)的JVM參數(shù)
jstat [option vmid [ interval[s|ms] [count] ] ]
S0:年輕代中第一個(gè)survivor(幸存區(qū))已使用的占當(dāng)前容量百分比
S1:年輕代中第二個(gè)survivor(幸存區(qū))已使用的占當(dāng)前容量百分比
E:年輕代中Eden(伊甸園)已使用的占當(dāng)前容量百分比
O:old代已使用的占當(dāng)前容量百分比
P:perm代已使用的占當(dāng)前容量百分比
YGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c次數(shù)
YGCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中g(shù)c所用時(shí)間(s)
FGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc次數(shù)
FGCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)old代(全gc)gc所用時(shí)間(s)
GCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)gc用的總時(shí)間(s)
本地的VMID同LVMID,遠(yuǎn)程的VMID格式[protocol :]=[//] lvmid [@hostname[port]/servername]
常用命令:
1、jstat -gcutil pid 統(tǒng)計(jì)gc信息統(tǒng)計(jì)。
2、 jstat -gc pid 可以顯示gc的信息,查看gc的次數(shù),及時(shí)間。其中最后五項(xiàng),分別是young gc的次數(shù),young gc的時(shí)間,full gc的次數(shù),full gc的時(shí)間,gc的總時(shí)間。
3、 jstat -gccapacity pid 可以顯示,VM內(nèi)存中三代(young,old,perm)對(duì)象的使用和占用大小,如:PGCMN顯示的是最小perm的內(nèi)存使用量,PGCMX顯示的是perm的內(nèi)存最大使用量,PGC是當(dāng)前新生成的perm內(nèi)存占用量,PC是但前perm內(nèi)存占用量。其他的可以根據(jù)這個(gè)類推, OC是old內(nèi)純的占用量。
4、jstat -gcnew pid 年輕代對(duì)象的信息。
5、jstat -gcnewcapacity pid 年輕代對(duì)象的信息及其占用量
6、jstat -gcold pid old代對(duì)象的信息。
7、jstat -gcoldcapacity pid old代對(duì)象的信息及其占用量。
8、jstat -gcpermcapacity pid perm對(duì)象的信息及其占用量。
9、jstat -class pid 顯示加載class的數(shù)量,及所占空間等信息。
10、jstat -compiler pid 顯示VM實(shí)時(shí)編譯的數(shù)量等信息。
11、jstat -printcompilation pid 當(dāng)前VM執(zhí)行的信息。
jinfo [option] pid
-flag 參看啟動(dòng)時(shí)未被指定的參數(shù)的系統(tǒng)默認(rèn)值
-flag [+ | -] name 或 -flag name=value 修改運(yùn)行期間可寫(xiě)的虛擬機(jī)參數(shù)值
-sysprops 打印System.properties()的內(nèi)容
jmap [option] vmid
-dump:[live,]format=b,file=<filename> live說(shuō)明只dump出存活的對(duì)象
-finalizerinfo 顯示F-Queue中等待Finalizer線程執(zhí)行finalize方法的對(duì)象
-heap java堆信息
-histo 堆中對(duì)象統(tǒng)計(jì)信息
-permstat 顯示永久代內(nèi)存狀態(tài)
-F 虛擬機(jī)對(duì)-dump沒(méi)有響應(yīng)時(shí)強(qiáng)制生成dump快照
jstack [option] vmid
-F 強(qiáng)制輸出
-l 除堆棧外,顯示關(guān)于鎖的附加信息
-m 如果調(diào)用本地方法,可以顯示C/C++堆棧