Linux 下JVM運行資訊追蹤__Linux

來源:互聯網
上載者:User
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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.