0.概况
java 版本
java version “1.8.0_291”
Java™ SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot™ 64-Bit Server VM (build 25.291-b10, mixed mode)
name | desc |
---|---|
jps | jvm进程 |
jmap | java内存映像工具 |
jstat | jvm统计信息监测 |
1. jps
用于显示jvm所有进程的命令
常用搭配:
-
jps -q
: -q 仅显示vmid -
jps -mlv
:
-m:输出传递给主方法的参数。-l:输出主类的完整包名或JAR文件的完整路径。
-v:输出传递给JVM的参数。
-V: 待补充
-V 参数和 -v参数 是互斥的
2. jmap
用于转储程序快照
注意:
- jmap -heap 命令会暂停 Java 进程的执行并进行内存快照,可能会对应用程序的性能产生一定的影响
- jmap -heap 命令可能会产生较大的输出,最好输出重定向到文件中
常用搭配:
jmap -heap [vmid]
结果分以下几块:
Heap Configuration: 主要是 堆配置
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 968884224 (924.0MB)# 堆的最大容量
NewSize = 19922944 (19.0MB) # 表示新生代的初始容量
MaxNewSize = 322961408 (308.0MB) # 表示新生代的最大容量
OldSize = 40894464 (39.0MB)
NewRatio = 2 #表示新生代与老年代内存大小的比例为 1:2
SurvivorRatio = 8 #表示 Eden 区域与 Survivor 区域之间内存大小的比例为8:1:1
MetaspaceSize = 21807104 (20.796875MB) #表示元数据区域的大小
CompressedClassSpaceSize = 1073741824 (1024.0MB) # 表示压缩类空间的大小
MaxMetaspaceSize = 17592186044415 MB #表示元数据区域的最大容量
G1HeapRegionSize = 0 (0.0MB) # # 表示 G1 垃圾回收器使用的内存
Heap Usage: 堆内存使用情况
Heap Usage:
PS Young Generation #新生代情况
Eden Space: # eden区
capacity = 42991616 (41.0MB) #表示 Eden 区域的最大容量
used = 4082944 (3.893798828125MB) # eden已使用容量
free = 38908672 (37.106201171875MB) #eden空闲容量
9.4970703125% used # eden已使用占比
From Space: # 表示 Survivor 0
capacity = 10485760 (10.0MB) # survivor from 区域的最大容量
used = 5457520 (5.2046966552734375MB) #survivor from 区域已使用容量
free = 5028240 (4.7953033447265625MB) #survivor from 区域空闲容量
52.046966552734375% used #已使用百分比
To Space: # 表示 Survivor `
capacity = 12058624 (11.5MB) # survivor from 区域的最大容量,下等同survivor from
used = 0 (0.0MB)
free = 12058624 (11.5MB)
0.0% used # 已使用百分比
PS Old Generation #老年代 区域的最大容量
capacity = 52953088 (50.5MB) #老年代最大容容积
used = 34483696 (32.88621520996094MB) # 老年代已使用容量
free = 18469392 (17.613784790039062MB) # 老年代空闲容量
65.12121823754642% used # #老年代 已使用百分比
2. jstat
对程序进行实时的信息统计
jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]
-class (类加载器)
-compiler (JIT)
-gc (GC 堆状态)
-gccapacity (各区大小)
-gccause (最近一次 GC 统计和原因)
-gcnew (新区统计)
-gcnewcapacity (新区大小)
-gcold (老区统计)
-gcoldcapacity (老区大小)
-gcpermcapacity (永久区大小)
-gcutil (GC 统计汇总)
-printcompilation (HotSpot 编译统计)
常用搭配:
jstat -gcutil 27115(jstat -gcutil vmid [间隔时间/毫秒] [查询次数]
)
#显示垃圾收集信息
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
52.05 0.00 13.09 65.12 94.58 92.59 66 0.863 2 0.106 0.969
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
M:元数据区已使用的占当前容量百分比
CCS:压缩类空间已使用的占当前容量百分比
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)