JVM內存分析工具 jps、jstack、jstat、jmap、jhat 的使用
JVM內存分析工具jps、jstack、jstat、jmap、jhat 的使用
說明
jps、jstack、jstat和jmap、jhat 等是jdk自帶的內存分析工具,能夠幫助我們分析堆、內存、線程的運行狀況等。
jps
jps由jdk1.5以上提供,用于查看當前用戶下的java進程的pid及基本信息
1、jps -help
jps的幫助命令,可用jps -h代替:
2、jps -m
查看進程pid及main方法參數:
3、jps -q
僅顯示pid:
4 、jps -v
查看pid及JVM參數:
5、 jps -l
查看pid及程序所在包名:
jstack
1)查看線程的棧信息,即JVM的當前時刻的線程快照。
2)主要用于定位線程出現長時間停頓的原因,如線程死鎖、死循環、請求外部時長過長導致線程停頓的原因。
3)建議間隔一定時間采集一次,通過3-5次采集,確認是否有線程一直處于running狀態,方便定位是否出現第2點的情況
用法:
jstack <PID>
jstack <PID> > test.txt #輸出到文件
jstat
1)主要用于統計堆內存、類相關和GC相關信息
2)可以時時監控資源和性能
jstat -gc <pid>
jstat -gc <pid> 2s 100 #間隔2s連續輸出100次
[root@lsy-36-70 ~]# jstat -gc 7574 2s 10 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 149760.0 149760.0 35129.5 0.0 749056.0 746427.7 1048576.0 222899.5 129280.0 122844.9 15104.0 14076.8 152 8.696 0 0.000 8.696 149760.0 149760.0 35129.5 0.0 749056.0 746540.0 1048576.0 222899.5 129280.0 122844.9 15104.0 14076.8 152 8.696 0 0.000 8.696 149760.0 149760.0 35129.5 0.0 749056.0 746687.8 1048576.0 222899.5 129280.0 122844.9 15104.0 14076.8 152 8.696 0 0.000 8.696 149760.0 149760.0 35129.5 0.0 749056.0 746731.0 1048576.0 222899.5 129280.0 122844.9 15104.0 14076.8 152 8.696 0 0.000 8.696 149760.0 149760.0 35129.5 0.0 749056.0 746745.0 1048576.0 222899.5 129280.0 122844.9 15104.0 14076.8 152 8.696 0 0.000 8.696 149760.0 149760.0 35129.5 0.0 749056.0 746878.8 1048576.0 222899.5 129280.0 122844.9 15104.0 14076.8 152 8.696 0 0.000 8.696 149760.0 149760.0 0.0 24516.0 749056.0 3428.4 1048576.0 223104.6 129280.0 122850.1 15104.0 14076.8 153 8.720 0 0.000 8.720 149760.0 149760.0 0.0 24516.0 749056.0 3670.3 1048576.0 223104.6 129280.0 122850.1 15104.0 14076.8 153 8.720 0 0.000 8.720 149760.0 149760.0 0.0 24516.0 749056.0 3734.9 1048576.0 223104.6 129280.0 122850.1 15104.0 14076.8 153 8.720 0 0.000 8.720 149760.0 149760.0 0.0 24516.0 749056.0 3881.1 1048576.0 223104.6 129280.0 122850.1 15104.0 14076.8 153 8.720 0 0.000 8.720
各指標描述:
S0C:年輕代中第一個survivor(幸存區)的容量 (字節 Capacity)
S1C:年輕代中第二個survivor(幸存區)的容量 (字節)
S0U:年輕代中第一個survivor(幸存區)目前已使用空間 (字節 Used)
S1U:年輕代中第二個survivor(幸存區)目前已使用空間 (字節)
EC:年輕代中Eden(伊甸園)的容量 (字節)
EU:年輕代中Eden(伊甸園)目前已使用空間 (字節)
OC:Old代的容量 (字節)
OU:Old代目前已使用空間 (字節)
MC:metaspace(元空間)的容量 (字節)
MU:metaspace(元空間)目前已使用空間 (字節)
CCSC:當前壓縮類空間的容量 (字節)
CCSU:當前壓縮類空間目前已使用空間 (字節)
YGC:從應用程序啟動到采樣時年輕代中gc次數
YGCT:從應用程序啟動到采樣時年輕代中gc所用時間(s)
FGC:從應用程序啟動到采樣時old代(全gc)gc次數
FGCT:從應用程序啟動到采樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啟動到采樣時gc用的總時間(s)
jmap
1)查看堆內存信息,包括使用的GC算法、堆配置參數和各代中堆內存使用情況,可以結合jhat使用
2)主要用于分析OOM
用法:
jmap -heap <PID>
jmap -dump:format=b,file=HeapDump <pid> #dump出內存信息,可用內存分析工具分析情況,format=b是通過二進制的意思
例如:
1)直接查看堆內存信息
[root@lsy-36-70 ~]# jmap -heap 7574 Attaching to process ID 7574, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.211-b12 using thread-local object allocation. Parallel GC with 8 thread(s) Heap Configuration: MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 MaxHeapSize = 3183476736 (3036.0MB) NewSize = 66060288 (63.0MB) MaxNewSize = 1061158912 (1012.0MB) OldSize = 133169152 (127.0MB) NewRatio = 2 SurvivorRatio = 8 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 0 (0.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 562561024 (536.5MB) used = 386173616 (368.2838592529297MB) free = 176387408 (168.2161407470703MB) 68.64564012170172% used From Space: capacity = 1048576 (1.0MB) used = 720896 (0.6875MB) free = 327680 (0.3125MB) 68.75% used To Space: capacity = 14155776 (13.5MB) used = 0 (0.0MB) free = 14155776 (13.5MB) 0.0% used PS Old Generation capacity = 108003328 (103.0MB) used = 27321200 (26.055526733398438MB) free = 80682128 (76.94447326660156MB) 25.296627896503338% used 16408 interned Strings occupying 1561208 bytes.
2)dump出堆內存信息到文件
[root@lsy-36-70 ~]# jmap -dump:format=b,file=/tmp/dump01.dat 7574 Dumping heap to /tmp/dump01.dat ... Heap dump file created
3)jhat查看,瀏覽器輸入7000端口訪問
[root@lsy-36-70 ~]# jhat -port 7000 /tmp/dump01.dat

4)使用內存分析工具裝載dump文件分析

heapdump工具地址
https://memory.console.heapdump.cn/detail/29833/class/default
浙公網安備 33010602011771號