文章目錄
- 前言
- jstat命令查看jvm的GC信息
- 1. 概述
- 2. 應用堆內存水位閥值大小怎么確定
- 3. 使用 jps 命令查看 Java 進程的進程號(PID)
- 4. jstat用法
- 5. 類加載統計
- 6. 編譯統計
- 7. 垃圾回收統計
- 8. 堆內存統計
- 9.新生代垃圾回收統計
- 10. 新生代內存統計
- 11. 老年代垃圾回收統計
- 12. 老年代內存統計
- 13. JVM編譯方法統計
前言
??如果您覺得有用的話,記得給博主點個贊,評論,收藏一鍵三連啊,寫作不易啊^ _ ^。
??而且聽說點贊的人每天的運氣都不會太差,實在白嫖的話,那歡迎常來啊!!!
jstat命令查看jvm的GC信息
1. 概述
Jstat是JDK自帶的一個輕量級小工具。全稱“Java Virtual Machine statistics monitoring tool”,它位于java的bin目錄下,主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。
2. 應用堆內存水位閥值大小怎么確定
關于堆內存的水位信息通常有三個值:S0C (Survivor 0 Capacity),S1C (Survivor 1 Capacity),和 EC (Eden Capacity)。這些值表示了堆內存的容量。
一般來說,你可能會關注以下幾個方面:
- Eden 區的使用率: 如果 Eden 區的使用率較高,可能會導致頻繁的 Minor GC。你可以通過監控 Eden 區的使用情況來判斷是否需要調整堆內存大小,以減少 Minor GC 的頻率。
- 幸存者區的使用率: 如果幸存者區的使用率過高,可能會導致對象在幸存者區之間頻繁移動,增加 Full GC 的可能性。你可以通過監控幸存者區的使用情況來調整相關參數,例如增大幸存者區的大小。
- 堆內存的總體使用情況: 關注整個堆內存的使用情況,確保沒有發生過多的 Full GC,因為 Full GC 會導致應用程序的停頓。
根據應用的具體情況,你可能需要調整堆內存的大小、調整新生代和老年代的比例,或者使用一些 JVM 參數進行優化。在調整這些參數時,建議進行仔細的性能測試,以確保調整的效果符合預期。
3. 使用 jps 命令查看 Java 進程的進程號(PID)
4. jstat用法
jstat命令可以查看堆內存各部分的使用量,以及加載類的數量。命令的格式如下:
jstat [-命令選項] [vmid] [間隔時間/毫秒] [查詢次數]
[root@cwgkxtts-vm01 ~]# jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-printcompilation
option: 參數選項-t: 可以在打印的列加上Timestamp列,用于顯示系統運行的時間
-h: 可以在周期性數據數據的時候,可以在指定輸出多少行以后輸出一次表頭
vmid: Virtual Machine ID( 進程的 pid)
interval: 執行每次的間隔時間,單位為毫秒
count: 用于指定輸出多少次記錄,缺省則會一直打印
5. 類加載統計
[root@cwgkxtts-vm01 ~]# lsof -i:17001
[root@cwgkxtts-vm01 ~]# jstat -class 49101
§ Loaded:加載class的數量
§ Bytes:所占用空間大小
§ Unloaded:未加載數量
§ Bytes:未加載占用空間
§ Time:時間
6. 編譯統計
[root@cwgkxtts-vm01 ~]# lsof -i:17001
[root@cwgkxtts-vm01 ~]# jstat -compiler 49101
§ Compiled:編譯數量。
§ Failed:失敗數量
§ Invalid:不可用數量
§ Time:時間
§ FailedType:失敗類型
§ FailedMethod:失敗的方法
7. 垃圾回收統計
[root@cwgkxtts-vm01 ~]# lsof -i:17001
[root@cwgkxtts-vm01 ~]# jstat -gc 49101
§ S0C:第一個幸存區的大小
§ S1C:第二個幸存區的大小
§ S0U:第一個幸存區的使用大小
§ S1U:第二個幸存區的使用大小
§ EC:伊甸園區的大小
§ EU:伊甸園區的使用大小
§ OC:老年代大小
§ OU:老年代使用大小
§ MC:方法區大小
§ MU:方法區使用大小
§ CCSC:壓縮類空間大小
§ CCSU:壓縮類空間使用大小
§ YGC:年輕代垃圾回收次數
§ YGCT:年輕代垃圾回收消耗時間
§ FGC:老年代垃圾回收次數
§ FGCT:老年代垃圾回收消耗時間
§ GCT:垃圾回收消耗總時間
8. 堆內存統計
[root@cwgkxtts-vm01 ~]# lsof -i:17001
[root@cwgkxtts-vm01 ~]# jstat -gccapacity 49101
§ NGCMN:新生代最小容量
§ NGCMX:新生代最大容量
§ NGC:當前新生代容量
§ S0C:第一個幸存區大小
§ S1C:第二個幸存區的大小
§ EC:伊甸園區的大小
§ OGCMN:老年代最小容量
§ OGCMX:老年代最大容量
§ OGC:當前老年代大小
§ OC:當前老年代大小
§ MCMN:最小元數據容量
§ MCMX:最大元數據容量
§ MC:當前元數據空間大小
§ CCSMN:最小壓縮類空間大小
§ CCSMX:最大壓縮類空間大小
§ CCSC:當前壓縮類空間大小
§ YGC:年輕代gc次數
§ FGC:老年代GC次數
9.新生代垃圾回收統計
[root@cwgkxtts-vm01 ~]# jstat -gcnew 49101
§ S0C:第一個幸存區大小
§ S1C:第二個幸存區的大小
§ S0U:第一個幸存區的使用大小
§ S1U:第二個幸存區的使用大小
§ TT:對象在新生代存活的次數
§ MTT:對象在新生代存活的最大次數
§ DSS:期望的幸存區大小
§ EC:伊甸園區的大小
§ EU:伊甸園區的使用大小
§ YGC:年輕代垃圾回收次數
§ YGCT:年輕代垃圾回收消耗時間
10. 新生代內存統計
[root@cwgkxtts-vm01 ~]# jstat -gcnewcapacity 49101
§ NGCMN:新生代最小容量
§ NGCMX:新生代最大容量
§ NGC:當前新生代容量
§ S0CMX:最大幸存1區大小
§ S0C:當前幸存1區大小
§ S1CMX:最大幸存2區大小
§ S1C:當前幸存2區大小
§ ECMX:最大伊甸園區大小
§ EC:當前伊甸園區大小
§ YGC:年輕代垃圾回收次數
§ FGC:老年代回收次數
11. 老年代垃圾回收統計
[root@cwgkxtts-vm01 ~]# jstat -gcold 49101
§ MC:方法區大小
§ MU:方法區使用大小
§ CCSC:壓縮類空間大小
§ CCSU:壓縮類空間使用大小
§ OC:老年代大小
§ OU:老年代使用大小
§ YGC:年輕代垃圾回收次數
§ FGC:老年代垃圾回收次數
§ FGCT:老年代垃圾回收消耗時間
§ GCT:垃圾回收消耗總時間
12. 老年代內存統計
[root@cwgkxtts-vm01 ~]# jstat -gcoldcapacity 49101
§ OGCMN:老年代最小容量
§ OGCMX:老年代最大容量
§ OGC:當前老年代大小
§ OC:老年代大小
§ YGC:年輕代垃圾回收次數
§ FGC:老年代垃圾回收次數
§ FGCT:老年代垃圾回收消耗時間
§ GCT:垃圾回收消耗總時間
13. JVM編譯方法統計
[root@cwgkxtts-vm01 ~]# jstat -printcompilation 49101
§ Compiled:最近編譯方法的數量
§ Size:最近編譯方法的字節碼數量
§ Type:最近編譯方法的編譯類型。
§ Method:方法名標識。