1.TOP -H -p 命令
通過TOP -H -p 進程ID,找到具體的線程佔用情況,Shift+H可以開啓關閉線程顯示。查看某一個進程的線程情況
2.pstack 進程id 命令
pstack 進程id顯示線程堆棧,就是佔用CPU最高的堆棧,可以具體分析什麼原因造成的。
jstat命令可以查看堆內存各部分的使用量,以及加載類的數量。命令的格式如下:
jstat [-命令選項] [vmid] [間隔時間/毫秒] [查詢次數]
注意!!!:使用的jdk版本是jdk8.
類加載統計:
- Loaded:加載class的數量
- Bytes:所佔用空間大小
- Unloaded:未加載數量
- Bytes:未加載佔用空間
- Time:時間
編譯統計
- Compiled:編譯數量。
- Failed:失敗數量
- Invalid:不可用數量
- Time:時間
- FailedType:失敗類型
- FailedMethod:失敗的方法
垃圾回收統計
- S0C:第一個倖存區的大小
- S1C:第二個倖存區的大小
- S0U:第一個倖存區的使用大小
- S1U:第二個倖存區的使用大小
- EC:伊甸園區的大小
- EU:伊甸園區的使用大小
- OC:老年代大小
- OU:老年代使用大小
- MC:方法區大小
- MU:方法區使用大小
- CCSC:壓縮類空間大小
- CCSU:壓縮類空間使用大小
- YGC:年輕代垃圾回收次數
- YGCT:年輕代垃圾回收消耗時間
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
堆內存統計
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:當前新生代容量
- S0C:第一個倖存區大小
- S1C:第二個倖存區的大小
- EC:伊甸園區的大小
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:當前老年代大小
- OC:當前老年代大小
- MCMN:最小元數據容量
- MCMX:最大元數據容量
- MC:當前元數據空間大小
- CCSMN:最小壓縮類空間大小
- CCSMX:最大壓縮類空間大小
- CCSC:當前壓縮類空間大小
- YGC:年輕代gc次數
- FGC:老年代GC次數
新生代垃圾回收統計
- S0C:第一個倖存區大小
- S1C:第二個倖存區的大小
- S0U:第一個倖存區的使用大小
- S1U:第二個倖存區的使用大小
- TT:對象在新生代存活的次數
- MTT:對象在新生代存活的最大次數
- DSS:期望的倖存區大小
- EC:伊甸園區的大小
- EU:伊甸園區的使用大小
- YGC:年輕代垃圾回收次數
- YGCT:年輕代垃圾回收消耗時間
新生代內存統計
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:當前新生代容量
- S0CMX:最大幸存1區大小
- S0C:當前倖存1區大小
- S1CMX:最大幸存2區大小
- S1C:當前倖存2區大小
- ECMX:最大伊甸園區大小
- EC:當前伊甸園區大小
- YGC:年輕代垃圾回收次數
- FGC:老年代回收次數
老年代垃圾回收統計
- MC:方法區大小
- MU:方法區使用大小
- CCSC:壓縮類空間大小
- CCSU:壓縮類空間使用大小
- OC:老年代大小
- OU:老年代使用大小
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
老年代內存統計
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:當前老年代大小
- OC:老年代大小
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
元數據空間統計
- MCMN: 最小元數據容量
- MCMX:最大元數據容量
- MC:當前元數據空間大小
- CCSMN:最小壓縮類空間大小
- CCSMX:最大壓縮類空間大小
- CCSC:當前壓縮類空間大小
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
總結垃圾回收統計
- S0:倖存1區當前使用比例
- S1:倖存2區當前使用比例
- E:伊甸園區使用比例
- O:老年代使用比例
- M:元數據區使用比例
- CCS:壓縮使用比例
- YGC:年輕代垃圾回收次數
- FGC:老年代垃圾回收次數
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間
JVM編譯方法統計
- Compiled:最近編譯方法的數量
- Size:最近編譯方法的字節碼數量
- Type:最近編譯方法的編譯類型。
- Method:方法名標識。
jvm的命令轉自:https://www.cnblogs.com/yjd_hycf_space/p/7755633.html
1. 在linux下,查看一個運行中的程序, 佔用了多少內存, 一般的命令有
(1). ps aux:
其中 VSZ(或VSS)列 表示,程序佔用了多少虛擬內存。
RSS列 表示, 程序佔用了多少物理內存。
虛擬內存可以不用考慮,它並不佔用實際物理內存。
(2). top 命令也可以
其中 VIRT(或VSS)列 表示,程序佔用了多少虛擬內存。 同 ps aux 中的 VSZ列
RES列 表示, 程序佔用了多少物理內存。同 ps aux 中的RSS列
2.在linux下, 查看當前系統佔用了多少內存, 一般的命令是 free
其中, free就是系統還有多少內存可以使用。
但由於 linux 系統對內存使用有一個原則, 就是, 內存是寶貴的, 能使用多少就使用多少。 所以, linux會把已經調用過的包緩存起來,放在內存裏。
這樣,實際上,可以使用的內存,就可以理解爲, free+buffers+cached