1. jps
列出正在运行的虚拟机进程信息。
jps -l
:显示主类全名
jps -v
:显示启动时jvm参数
jps -q
:显示main函数参数
jps -m
:只输出LVMID
2. jstat
统计信息监视工具。
2.1
1 2 3 4 5
| ☁ blog jstat -gcutil 1396 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 0.00 68.89 28.63 96.31 93.85 8 0.066 2 0.110 0.177
|
2.1 垃圾回收统计
blog jstat -gc 1396 只统计一次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| ☁ blog jstat -gc 1396 1000 5 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 13824.0 13824.0 0.0 0.0 240640.0 165787.3 61952.0 17737.2 35456.0 34146.1 4736.0 4444.5 8 0.066 2 0.110 0.177 13824.0 13824.0 0.0 0.0 240640.0 165787.3 61952.0 17737.2 35456.0 34146.1 4736.0 4444.5 8 0.066 2 0.110 0.177 13824.0 13824.0 0.0 0.0 240640.0 165787.3 61952.0 17737.2 35456.0 34146.1 4736.0 4444.5 8 0.066 2 0.110 0.177 13824.0 13824.0 0.0 0.0 240640.0 165787.3 61952.0 17737.2 35456.0 34146.1 4736.0 4444.5 8 0.066 2 0.110 0.177 13824.0 13824.0 0.0 0.0 240640.0 165787.3 61952.0 17737.2 35456.0 34146.1 4736.0 4444.5 8 0.066 2 0.110 0.177
(单位是kb) S0C:S0的容量 S1C:S1的容量 S0U:S0已使用容量 S1C:S1已使用容量 EC:Eden区容量 EU:Eden区已使用容量 OC:老年代容量 OU:老年代已使用容量 MC:元空间容量 MU:元空间已使用容量 CCSC:压缩类空间容量 CCSU:压缩类空间已使用容量 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间
|
2.2 类加载统计
1 2 3 4 5 6 7 8 9
| ☁ blog jstat -class 1396 Loaded Bytes Unloaded Bytes Time 7455 13821.8 0 0.0 18.52 Loaded:加载class的数量 Bytes:所占用空间大小 Unloaded:未加载数量 Bytes:未加载占用空间 Time:加载耗时
|
2.3 统计编译
1 2 3
| ☁ blog jstat -compiler 1396 Compiled Failed Invalid Time FailedType FailedMethod 4210 0 0 1.43 0
|
2.4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| ☁ blog jstat -gccapacity 1396 NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC 43520.0 698880.0 276992.0 13824.0 13824.0 240640.0 87552.0 1398272.0 61952.0 61952.0 0.0 1079296.0 35456.0 0.0 1048576.0 4736.0 8 2 NGCMN:新生代最小容量 NGCMX:新生代最大容量 NGC:当前新生代容量 S0C:S0大小 S1C:S1大小 EC:eden区的大小 OGCMN:老年代最小容量 OGCMX:老年代最大容量 OGC:当前老年代大小 OC:当前老年代大小 MCMN:最小元数据容量 MCMX:最大元数据容量 MC:当前元数据空间大小 CCSMN:最小压缩类空间大小 CCSMX:最大压缩类空间大小 CCSC:当前压缩类空间大小 YGC:年轻代gc次数 FGC:老年代GC次数
|
新生代垃圾回收统计
https://blog.csdn.net/wangshuminjava/article/details/107041189太多了下次补
3. jinfo
查看和调整虚拟机各项参数
1 2 3 4 5 6 7 8
| ☁ blog jinfo -flag CMSInitiatingOccupancyFraction 1396 -XX:CMSInitiatingOccupancyFraction=-1
查看使用CMS收集器时,老年代使用了指定阈值的内存时,出发FullGC。默认-1 如果CMSInitiatingOccupancyFraction在0~100之间,那么由CMSInitiatingOccupancyFraction决定。 否则由按 ((100 - MinHeapFreeRatio) + (double)( CMSTriggerRatio * MinHeapFreeRatio) / 100.0) / 100.0 决定 ———————————————— 原文链接:https:
|
4. jmap
生成堆dump快照文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| jmap -heap 1396 Attaching to process ID 6, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.212-b04
using thread-local object allocation. Garbage-First (G1) GC with 4 thread(s)
Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 2147483648 (2048.0MB) NewSize = 1073741824 (1024.0MB) MaxNewSize = 1073741824 (1024.0MB) OldSize = 5452592 (5.1999969482421875MB) NewRatio = 2 SurvivorRatio = 8 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 1048576 (1.0MB)
Heap Usage: G1 Heap: regions = 2048 capacity = 2147483648 (2048.0MB) used = 454693360 (433.62937927246094MB) free = 1692790288 (1614.370620727539MB) 21.17330953478813% used G1 Young Generation: Eden Space: regions = 355 capacity = 1120927744 (1069.0MB) used = 372244480 (355.0MB) free = 748683264 (714.0MB) 33.20860617399439% used Survivor Space: regions = 7 capacity = 7340032 (7.0MB) used = 7340032 (7.0MB) free = 0 (0.0MB) 100.0% used G1 Old Generation: regions = 72 capacity = 1019215872 (972.0MB) used = 75108848 (71.62937927246094MB) free = 944107024 (900.3706207275391MB) 7.36927770292808% used
45017 interned Strings occupying 5168104 bytes.
原文链接:https:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| ☁ blog jmap -histo 3865
num ---------------------------------------------- 1: 669 2725952 [I 2: 3345 1774608 [B 3: 7830 1022800 [C 4: 5556 133344 java.lang.String 5: 684 78072 java.lang.Class 6: 1400 70448 [Ljava.lang.Object; 7: 683 27320 java.util.LinkedHashMap$Entry 8: 540 17280 java.util.HashMap$Node 9: 536 17152 java.io.File 10: 325 16680 [Ljava.lang.String; 11: 50 15168 [Ljava.util.HashMap$Node; 12: 229 14656 java.net.URL
|
jmap -dump:format=b,file=test.dump 1396
:会在当前路径下生成test.bin快照文件
5. jhat
jhat test.dump
:jhat会生成一个界面,可分析dump文件,但是很难用,一般不会用它。
6. jstack
生成虚拟机当前时刻的线程快照(threaddump),它是当前虚拟机内每一条线程正在执行的方法堆栈的集合,通过分析快照,可以定位线程出现长时间停顿的原因,比如线程间死锁、死循环、请求外部资源导致线程长时间挂起等。