top
语法结构:
Usage: jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interva[s|ms]> [<count>]]
参数解释:
Options — 选项,我们一般使用 -gcutil 查看gc情况
vmid — VM的进程号,即当前运行的java进程号
interval[s|ms] —— 间隔时间,单位为秒或者毫秒,默认为ms。必须是正整型。
count — 打印次数,如果缺省则打印无数次
输出参数:
-hn 每个n行输出一次列表头。默认为0,仅输出一次。
-tn 在第一列输出时间戳。该时间戳从jvm启动开始。
-JjavaOption
具体参数:
-class: 统计class loader 行为信息
-compiler: 统计编译行为信息
-gc:统计jdk gc时heap信息
-gccapacity:统计不同的generations(新生代、老生代、永久代)相应的heap容量信息
-gccause:统计gc的情况,以及引起gc的事情。同-gcutil
-gcnew:统计新生代的gc情况
-gcnewcapacity:统计新生代gc时heap的容量信息
-gcold:统计老生代的gc情况
-gcoldcapacity:统计老生代gc时heap容量信息
-gcpermcapacity:统计永久代gc时的容量信息
-gcutil:统计heap的gc情况
-printcompilation:没用过
jstat -gcutil :
结果信息:
S0 — Heap上的 Survivor space 0 区已使用空间的百分比
S1 — Heap上的 Survivor space 1 区已使用空间的百分比
E — Heap上的 Eden space 区已使用空间的百分比
O — Heap上的 Old space 区已使用空间的百分比
P — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
jstat -gcutil 26543 2000
jstat -gcutil 19773 2000
jstat -gccause 19773 2000
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
31.25 0.00 96.61 72.71 94.79 91.82 473252 2913.380 284 53.532 2966.913
25.00 0.00 43.08 74.66 94.79 91.82 473326 2913.828 284 53.532 2967.361 20210821
0.00 31.25 82.67 88.09 94.79 91.82 478365 2945.164 287 54.221 2999.385
jstat -gc -t 26543 10000 30
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间s
imestamp S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
3418004.1 512.0 512.0 0.0 160.0 67072.0 39987.6 136704.0 122092.4 100672.0 95422.5 13184.0 12105.6 478413 2945.484 287 54.221 2999.705
3418014.0 512.0 512.0 0.0 128.0 67072.0 32122.1 136704.0 122140.4 100672.0 95422.5 13184.0 12105.6 478415 2945.498 287 54.221 2999.719
3418024.1 512.0 512.0 0.0 128.0 67072.0 22942.5 136704.0 122212.4 100672.0 95422.5 13184.0 12105.6 478417 2945.514 287 54.221 2999.735
3418631.5 512.0 512.0 160.0 0.0 67072.0 47146.4 136704.0 126124.8 100672.0 95422.5 13184.0 12105.6 478530 2946.142 287 54.221 3000.363
ygc 非常大 增加 478530 - 478417
jstat -gcmetacapacity 26543
MCMN: 最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间s
GCT:垃圾回收消耗总时间s
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT
0.0 1136640.0 100672.0 0.0 1048576.0 13184.0 478450 287 54.221 2999.940
jstat -gcutil 26543 10000 30
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 31.25 25.46 92.96 94.79 91.82 478559 2946.342 287 54.221 3000.563
0.00 25.00 13.11 92.99 94.79 91.82 478561 2946.355 287 54.221 3000.576
0.00 37.50 0.76 93.05 94.79 91.82 478563 2946.369 287 54.221 3000.590
31.25 0.00 56.27 62.44 94.79 91.82 478868 2948.295 288 54.408 3002.703
0.00 31.25 19.51 62.95 94.79 91.82 478887 2948.430 288 54.408 3002.838
0.00 31.25 6.02 62.99 94.79 91.82 478889 2948.444 288 54.408 3002.852
25.00 0.00 93.16 63.00 94.79 91.82 478890 2948.451 288 54.408 3002.858
31.25 0.00 78.52 63.07 94.79 91.82 478892 2948.462 288 54.408 3002.870
25.00 0.00 66.24 63.12 94.79 91.82 478894 2948.473 288 54.408 3002.881
jstat(JVM statistics Monitoring)是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
jstat -gc pid time : -gc 监控jvm的gc信息,pid 监控的jvm进程id,time每个多少毫秒刷新一次
jstat -gccause pid time : -gccause 监控gc信息并显示上次gc原因,pid 监控的jvm进程id,time每个多少毫秒刷新一次
jstat -class pid time: -class 监控jvm的类加载信息,pid 监控的jvm进程id,time每个多少毫秒刷新一次
jstat -gccause 26543 10000
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
0.00 31.25 40.82 94.07 94.79 91.82 478601 2946.596 287 54.221 3000.817 Allocation Failure No GC
0.00 31.25 27.43 94.11 94.79 91.82 478603 2946.608 287 54.221 3000.829 Allocation Failure No GC
0.00 31.25 15.38 61.90 94.79 91.82 480517 2958.814 293 55.501 3014.315 Allocation Failure No GC
0.00 25.00 0.22 61.97 94.79 91.82 480519 2958.827 293 55.501 3014.328 Allocation Failure No GC
jstat -class 26543 10000
Loaded Bytes Unloaded Bytes Time
21081 34705.1 3345 3034.0 46.40
21081 34705.1 3345 3034.0 46.40
21081 34705.1 3345 3034.0 46.40
jstat -gcoldcapacity -t 26543 250 3
imestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT
3420001.3 136704.0 341504.0 136704.0 136704.0 478786 287 54.221 3001.995
3420001.6 136704.0 341504.0 136704.0 136704.0 478786 287 54.221 3001.995
3420001.8 136704.0 341504.0 136704.0 136704.0 478786 287 54.221 3001.995
/admin/java/jdk1.8.0_121/bin/jmap -heap 26543
Attaching to process ID 26543, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 524288000 (500.0MB)
NewSize = 69730304 (66.5MB)
MaxNewSize = 174587904 (166.5MB)
OldSize = 139984896 (133.5MB)
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 = 68681728 (65.5MB)
used = 38726984 (36.93292999267578MB)
free = 29954744 (28.56707000732422MB)
56.386152660573714% used
From Space:
capacity = 524288 (0.5MB)
used = 131072 (0.125MB)
free = 393216 (0.375MB)
25.0% used
To Space:
capacity = 524288 (0.5MB)
used = 0 (0.0MB)
free = 524288 (0.5MB)
0.0% used
PS Old Generation
capacity = 139984896 (133.5MB)
used = 98437392 (93.87721252441406MB)
free = 41547504 (39.62278747558594MB)
70.32000938158357% used
eap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 524288000 (500.0MB)
NewSize = 69730304 (66.5MB)
MaxNewSize = 174587904 (166.5MB)
OldSize = 139984896 (133.5MB)
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 = 68681728 (65.5MB)
used = 18937552 (18.060256958007812MB)
free = 49744176 (47.43974304199219MB)
27.57291138627147% used
From Space:
capacity = 524288 (0.5MB)
used = 131072 (0.125MB)
free = 393216 (0.375MB)
25.0% used
To Space:
capacity = 524288 (0.5MB)
used = 0 (0.0MB)
free = 524288 (0.5MB)
0.0% used
PS Old Generation
capacity = 139984896 (133.5MB)
used = 86227816 (82.2332534790039MB)
free = 53757080 (51.266746520996094MB)
61.5979426809018% used
sudo -u useradmin /user/java/jdk1.8.0_121/bin/jmap -dump
:live,file=/user/gcerr/26543jmap0821.hprof 26543
Dumping heap to /user/gcerr/26543jmap0821.hprof ...
Heap dump file created
查看进程号为26543的进程中的线程情况
top -H -p 26543
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26924 useradmin 20 0 4401136 609684 17412 S 2.0 3.7 744:46.28 java
26672 useradmin 20 0 4401136 609684 17412 S 0.3 3.7 13:16.23 java
26703 useradmin 20 0 4401136 609684 17412 S 0.3 3.7 286:31.89 java
26543 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 0:00.00 java
26545 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 0:14.03 java
26546 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 23:44.97 java
26547 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 23:44.63 java
26548 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 23:39.39 java
26549 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 23:41.38 java
26550 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 34:11.82 java
26551 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 0:09.80 java
26552 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 0:16.48 java
26553 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 0:00.00 java
26554 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 1:02.84 java
26660 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 23:18.27 java
26661 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 0:03.03 java
26662 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 5:06.04 java
26663 useradmin 20 0 4401136 609684 17412 S 0.0 3.7 6:33.34 java
printf "%x\n" 26924
692c
jstack 26543| grep 692c
[useradmin@host-172-21-182-11 ~]$ jstack 26543| grep 692c
"sentinel-metrics-record-task-thread-1" #97 daemon prio=5 os_prio=0 tid=0x00007fc864195000 nid=0x692c waiting on condition [0x00007fc7eb2e2000]
/user/java/jdk1.8.0_121/bin/jmap -histo:live 26543 | more
/user/java/jdk1.8.0_121/bin/jmap -histo:live 26543 | more
num #instances #bytes class name
----------------------------------------------
1: 846658 27093056 com.alibaba.csp.sentinel.slots.statistic.base.Long
Adder
2: 108191 10545264 [C
3: 140109 5604360 [Lcom.alibaba.csp.sentinel.slots.statistic.base.Lo
ngAdder;
4: 43595 5153504 [Ljava.lang.Object;
5: 140109 4483488 com.alibaba.csp.sentinel.slots.statistic.base.Wind
owWrap
6: 140109 3362616 com.alibaba.csp.sentinel.slots.statistic.data.Metr
icBucket
7: 107695 2584680 java.lang.String
8: 18930 2088800 java.lang.Class
9: 62208 1990656 java.util.concurrent.ConcurrentHashMap$Node
10: 16537 1455256 java.lang.reflect.Method
11: 28537 1369776 java.util.HashMap
12: 29560 1182400 java.util.LinkedHashMap$Entry
2021-8-21 15:49
num #instances #bytes class name
----------------------------------------------
1: 846706 27094592 com.alibaba.csp.sentinel.slots.statistic.base.Long
Adder
2: 108226 10547432 [C
3: 140117 5604680 [Lcom.alibaba.csp.sentinel.slots.statistic.base.Lo
ngAdder;
4: 43942 5172760 [Ljava.lang.Object;
5: 140117 4483744 com.alibaba.csp.sentinel.slots.statistic.base.Wind
owWrap
6: 140117 3362808 com.alibaba.csp.sentinel.slots.statistic.data.Metr
icBucket
7: 107730 2585520 java.lang.String
8: 18930 2088800 java.lang.Class
9: 62208 1990656 java.util.concurrent.ConcurrentHashMap$Node
10: 16537 1455256 java.lang.reflect.Method
11: 28557 1370736 java.util.HashMap
12: 29560 1182400 java.util.LinkedHashMap$Entry
13: 8673 1132928 [B
14: 9550 1017056 [I
15: 12344 886560 [Ljava.util.HashMap$Node;
/user/java/jdk1.8.0_121//bin/java -jar -d64 -Xms200M -Xmx800M -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=8 -XX:NewSize=10M -XX:MaxNewSize=10M -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/user/gcerr/gclogs.log -server /user/project/gateway.jar
-XX:+UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=4 -XX:+UseAdaptiveSizePolicy -XX:MaxHeapSize=2147483648 -XX:MaxNewSize=1073741824 -XX:NewSize=1073741824 -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintGCTimeStamps