JPS 查看當前運行java進程
JVM Process Status Tool,顯示指定系統內所有的HotSpot虛擬機器進程。
jps -lvm 用於查看當前機器上啟動並執行java進程。
命令格式 jps [options] [hostid]
註:如果不指定hostid就預設為當前主機或伺服器。
命令列參數選項說明如下:
-q 不輸出類名、Jar名和傳入main方法的參數
-m 輸出傳入main方法的參數
-l 輸出main類或Jar的全限名
-v 輸出傳入JVM的參數
[root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jps -lvm
10870 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/data/apache-tomcat-8066/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/data/apache-tomcat-8066/endorsed -Dcatalina.base=/data/apache-tomcat-8066 -Dcatalina.home=/data/apache-tomcat-8066 -Djava.io.tmpdir=/data/apache-tomcat-8066/temp
16204 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/data/apache-tomcat-7.0.72/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 -Djava.endorsed.dirs=/data/apache-tomcat-7.0.72/endorsed -Dcatalina.base=/data/apache-tomcat-7.0.72 -Dcatalina.home=/data/apache-tomcat-7.0.72 -Djava.io.tmpdir=/data/apache-tomcat-7.0.72/temp
17740 sun.tools.jps.Jps -lvm -Denv.class.path=.:/data/jdk1.8.0_102/lib/dt.jar:/data/jdk1.8.0_102/lib/tools.jar:/data/jdk1.8.0_102/jre/lib -Dapplication.home=/data/jdk1.8.0_102 -Xms8m
[root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat
jstat(JVM statistics Monitoring)是用於監視虛擬機器運行時狀態資訊的命令,它可以顯示出虛擬機器進程中的類裝載、記憶體、垃圾收集、JIT編譯等運行資料。 命令格式
jstat [option] PID [interval] [count] 參數
[option] : 巨集指令引數
LVMID : 本地虛擬機器進程ID
[interval] : 連續輸出的時間間隔
[count] : 連續輸出的次數 option 參數總覽 class class loader的行為統計。Statistics on the behavior of the class
loader. compiler HotSpt JIT編譯器行為統計。Statistics of the behavior of the HotSpot
Just-in-Time compiler. gc 記憶體回收堆的行為統計。Statistics of the behavior of the garbage collected
heap. gccapacity 各個記憶體回收代容量(young,old,perm)和他們相應的空間統計。Statistics of the
capacities of the generations and their corresponding spaces. gcutil 記憶體回收統計概述。Summary of garbage collection statistics. gccause 垃圾收集統計概述(同-gcutil),附加最近兩次記憶體回收事件的原因。Summary of garbage
collection statistics (same as -gcutil), with the cause of the last
and gcnew 新生代行為統計。Statistics of the behavior of the new generation. gcnewcapacity 新生代與其相應的記憶體空間的統計。Statistics of the sizes of the new
generations and its corresponding spaces. gcold 年老代和永生代行為統計。Statistics of the behavior of the old and permanent
generations. gcoldcapacity 年老代行為統計。Statistics of the sizes of the old generation. gcmetacapacity 中繼資料空間統計。
generation. printcompilation HotSpot編譯方法統計。HotSpot compilation method statistics. option 參數詳解 -class 監視類裝載、卸載數量、總空間以及耗費的時間 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -class 21275
Loaded Bytes Unloaded Bytes Time
9293 17927.5 0 0.0 33.90
[root@iZbp1bmo3l7m8z7ac5bi4wZ ~]#
Loaded : 載入class的數量
Bytes : class位元組大小
Unloaded : 未載入class的數量
Bytes : 未載入class的位元組大小
Time : 載入時間 -compiler 輸出JIT編譯過的方法數量耗時等 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -compiler 21275
Compiled Failed Invalid Time FailedType FailedMethod
10869 1 0 24.52 1 org/aspectj/weaver/Iterators$6 hasNext
[root@iZbp1bmo3l7m8z7ac5bi4wZ ~]#
Compiled : 編譯數量
Failed : 編譯失敗數量
Invalid : 無效數量
Time : 編譯耗時
FailedType : 失敗類型
FailedMethod : 失敗方法的全限定名 -gc 記憶體回收堆的行為統計,常用命令 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gc 21275
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
86016.0 89600.0 0.0 8769.9 148992.0 26212.9 332288.0 247371.9 59008.0 57361.6 6784.0 6348.8 17 0.379 3 0.345 0.724
[root@iZbp1bmo3l7m8z7ac5bi4wZ ~]#
C即Capacity 總容量,U即Used 已使用的容量
S0C : survivor0區的總容量
S1C : survivor1區的總容量
S0U : survivor0區已使用的容量
S1C : survivor1區已使用的容量
EC : Eden區的總容量
EU : Eden區已使用的容量
OC : Old區的總容量
OU : Old區已使用的容量
MC:方法區大小
MU:方法區使用大小
CCSC:壓縮類空間大小
CCSU:壓縮類空間使用大小
YGC : 新生代記憶體回收次數
YGCT : 新生代記憶體回收時間
FGC : 老年代記憶體回收次數
FGCT : 老年代記憶體回收時間
GCT : 記憶體回收總消耗時間 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gc 21275 2000 20
這個命令意思就是每隔2000ms輸出1262的gc情況,一共輸出20次 -gccapacity 同-gc,不過還會輸出Java堆各地區使用到的最大、最小空間 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gccapacity 21275
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
20992.0 338432.0 337920.0 86016.0 89600.0 148992.0 42496.0 677376.0 332288.0 332288.0 0.0 1101824.0 59008.0 0.0 1048576.0 6784.0 17 3
[root@iZbp1bmo3l7m8z7ac5bi4wZ ~]#
NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:當前新生代容量
S0C:第一個倖存區大小
S1C:第二個倖存區的大小
EC:伊甸園區的大小
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:當前老年代大小
OC:當前老年代大小
MCMN:最小中繼資料容量
MCMX:最大中繼資料容量
MC:當前中繼資料空間大小
CCSMN:最小壓縮類空間大小
CCSMX:最大壓縮類空間大小
CCSC:當前壓縮類空間大小
YGC:年輕代gc次數
FGC:老年代GC次數 -gcutil 同-gc,不過輸出的是已使用空間佔總空間的百分比 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gcutil 21275
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 9.79 21.39 74.45 97.21 93.59 17 0.379 3 0.345 0.724
S0:倖存1區當前使用比例
S1:倖存2區當前使用比例
E:伊甸園區使用比例
O:老年代使用比例
M:中繼資料區使用比例
CCS:壓縮使用比例
YGC:年輕代記憶體回收次數
FGC:老年代記憶體回收次數
FGCT:老年代記憶體回收消耗時間
GCT:記憶體回收消耗總時間 -gccause 垃圾收集統計概述(同-gcutil),附加最近兩次記憶體回收事件的原因 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gccause 21275
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
0.00 9.79 21.39 74.45 97.21 93.59 17 0.379 3 0.345 0.724 Allocation Failure No GC
LGCC:最近記憶體回收的原因
GCC:當前記憶體回收的原因 -gcnew 統計新生代的行為 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gcnew 21275
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
86016.0 89600.0 0.0 8769.9 4 15 86016.0 148992.0 34327.2 17 0.379
S0C:第一個倖存區大小
S1C:第二個倖存區的大小
S0U:第一個倖存區的使用大小
S1U:第二個倖存區的使用大小
TT:對象在新生代存活的次數
MTT:對象在新生代存活的最大次數
DSS:期望的倖存區大小
EC:伊甸園區的大小
EU:伊甸園區的使用大小
YGC:年輕代記憶體回收次數
YGCT:年輕代記憶體回收消耗時間 -gcnewcapacity 新生代與其相應的記憶體空間的統計 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gcnewcapacity 21275
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
20992.0 338432.0 337920.0 112640.0 86016.0 112640.0 89600.0 337408.0 148992.0 17 3
NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:當前新生代容量
S0CMX:最大倖存1區大小
S0C:當前倖存1區大小
S1CMX:最大倖存2區大小
S1C:當前倖存2區大小
ECMX:最大伊甸園區大小
EC:當前伊甸園區大小
YGC:年輕代記憶體回收次數
FGC:老年代回收次數 -gcold 老年代記憶體回收統計 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gcold 21275
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
59008.0 57361.6 6784.0 6348.8 332288.0 247371.9 17 3 0.345 0.724
MC:方法區大小
MU:方法區使用大小
CCSC:壓縮類空間大小
CCSU:壓縮類空間使用大小
OC:老年代大小
OU:老年代使用大小
YGC:年輕代記憶體回收次數
FGC:老年代記憶體回收次數
FGCT:老年代記憶體回收消耗時間
GCT:記憶體回收消耗總時間 -gcoldcapacity 老年代記憶體統計 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gcoldcapacity 21275
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
42496.0 677376.0 332288.0 332288.0 17 3 0.345 0.724
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:當前老年代大小
OC:老年代大小
YGC:年輕代記憶體回收次數
FGC:老年代記憶體回收次數
FGCT:老年代記憶體回收消耗時間
GCT:記憶體回收消耗總時間 -gcmetacapacity 中繼資料空間統計 [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -gcmetacapacity 21275
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT
0.0 1101824.0 59008.0 0.0 1048576.0 6784.0 17 3 0.345 0.724
MCMN:最小中繼資料容量
MCMX:最大中繼資料容量
MC:當前中繼資料空間大小
CCSMN:最小壓縮類空間大小
CCSMX:最大壓縮類空間大小
CCSC:當前壓縮類空間大小
YGC:年輕代記憶體回收次數
FGC:老年代記憶體回收次數
FGCT:老年代記憶體回收消耗時間
GCT:記憶體回收消耗總時間 -printcompilation hotspot編譯方法統計(JVM編譯方法統計) [root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jstat -printcompilation 21275
Compiled Size Type Method
10954 307 1 java/util/Formatter$FormatSpecifier printString
Compiled:被執行的編譯任務的數量
Size:方法位元組碼的位元組數
Type:編譯類型
Method:編譯方法的類名和方法名。類名使用”/” 代替 “.” 作為空白間分隔字元. 方法名是給出類的方法名. 格式是一致於HotSpot - XX:+PrintComplation 選項 jmap
jmap(JVM Memory Map)命令用於產生heap dump檔案,如果不使用這個命令,還可以使用
-XX:+HeapDumpOnOutOfMemoryError參數來讓虛擬機器出現OOM的時候·自動產生dump檔案。
jmap不僅能產生dump檔案,還可以查詢finalize執行隊列、Java堆和永久代的詳細資料,如當前使用率、當前使用的是哪種收集器等。 命令格式
jmap [option] PID 參數 dump : 產生堆轉儲快照 finalizerinfo : 顯示在F-Queue隊列等待Finalizer線程執行finalizer方法的對象 heap : 顯示Java堆詳細資料 histo : 顯示堆中對象的統計資訊 permstat : to print permanent generation statistics F : 當-dump沒有響應時,強制產生dump快照 -dump堆到檔案,format指定輸出格式,live指明是活著的對象,file指定檔案名稱
[root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jmap -dump:live,format=b,file=/data/dump.hprof 21275Dumping heap to /data/dump.hprof ... //dump.hprof這個尾碼是為了後續可以直接用MAT(Memory Anlysis Tool)開啟Heap dump file created
1 2 3
jmap -heap 21275
[root@iZbp1bmo3l7m8z7ac5bi4wZ ~]# jmap -heap 21275Attaching to process ID 21275, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.102-b14using thread-local object allocation.Parallel GC with 2 thread(s) //GC 方式Heap Configuration://堆記憶體初始化配置 MinHeapFreeRatio = 0//對應jvm啟動參數-XX:MinHeapFreeRatio設定JVM堆最小空閑比率(default 40) MaxHeapFreeRatio = 100//對應jvm啟動參數 -XX:MaxHeapFreeRatio設定JVM堆最大空閑比率(default 70) MaxHeapSize = 1040187392 (992.0MB) //對應jvm啟動參數-XX:MaxHeapSize=設定JVM堆的最大大小 NewSize = 21495808 (20.5MB)//對應jvm啟動參數-XX:NewSize=設定JVM堆的‘新生代’的預設大小 MaxNewSize = 346554368 (330.5MB)//對應jvm啟動參數-XX:MaxNewSize=設定JVM堆的‘新生代’的最大大小 OldSize = 43515904 (41.5MB)//對應jvm啟動參數-XX:OldSize=<value>:設定JVM堆的‘老生代’的大小 NewRatio = 2//對應jvm啟動參數-XX:NewRatio=:‘新生代’和‘老生代’的大小比率 SurvivorRatio = 8//對應jvm啟動參數-XX:SurvivorRatio=設定年輕代中Eden區與Survivor區的大小比值 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 0 (0.0MB)Heap Usage://堆記憶體使用量情況PS Young Generatio