Linux查看某个服务JVM的GC和堆内存使用情况
使用 jps 命令查看配置了JVM的服务
标红部分是进程号
查看某个进程JVM的GC使用情况
jstat -gcutil 71614 5000
(jstat -gcutil 进程号 刷新时间)
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
查看堆内存使用情况
jmap -heap 71614
(jmap -heap 进程号)
Heap Configuration: #堆配置情况
MinHeapFreeRatio = 40 #堆最小使用比例
MaxHeapFreeRatio = 70 #堆最大使用比例
MaxHeapSize = 8589934592 (8192.0MB) #堆最大空间
NewSize = 1363144 (1.2999954223632812MB) #新生代初始化大小
MaxNewSize = 5152702464 (4914.0MB) #新生代可使用最大容量大小
OldSize = 5452592 (5.1999969482421875MB) #老生代大小
NewRatio = 2 #新生代比例
SurvivorRatio = 8 #新生代与suvivor的占比
MetaspaceSize = 21807104 (20.796875MB) #元数据空间初始大小
CompressedClassSpaceSize = 1073741824 (1024.0MB) #类指针压缩空间大小, 默认为1G
MaxMetaspaceSize = 17592186044415 MB #元数据空间的最大值, 超过此值就会触发 GC溢出( JVM会动态地改变此值)
G1HeapRegionSize = 2097152 (2.0MB) #区块的大小
Heap Usage:
G1 Heap:
regions = 4096 # G1区块初始化大小
capacity = 8589934592 (8192.0MB) #G1区块最大可使用大小
used = 1557972768 (1485.7986145019531MB) #G1区块已使用内存
free = 7031961824 (6706.201385498047MB) #G1区块空闲内存
18.137190118432045% used #G1区块使用比例
G1 Young Generation: #新生代
Eden Space: #Eden区空间
regions = 670
capacity = 2699034624 (2574.0MB)
used = 1405091840 (1340.0MB)
free = 1293942784 (1234.0MB)
52.05905205905206% used
Survivor Space: #Survivor区
regions = 3
capacity = 6291456 (6.0MB)
used = 6291456 (6.0MB)
free = 0 (0.0MB)
100.0% used
G1 Old Generation: #老生代
regions = 72
capacity = 1589641216 (1516.0MB)
used = 146589472 (139.79861450195312MB)
free = 1443051744 (1376.2013854980469MB)
9.221544492213267% used
Linux常用命令之查看jvm内存使用情况
jstat命令可以查看堆内存各部分的使用情况:
垃圾回收统计:jstat -gcutil 进程id
参数解释:
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
堆内存统计:
jstat -gccapacity 进程id
-
NGCMN:新生代最小容量
-
NGCMX:新生代最大容量
-
NGC:当前新生代容量
-
S0C:第一个幸存区大小
-
S1C:第二个幸存区的大小
-
EC:伊甸园区的大小
-
OGCMN:老年代最小容量
-
OGCMX:老年代最大容量
-
OGC:当前老年代大小
-
OC:当前老年代大小
-
MCMN:最小元数据容量
-
MCMX:最大元数据容量
-
MC:当前元数据空间大小
-
CCSMN:最小压缩类空间大小
-
CCSMX:最大压缩类空间大小
-
CCSC:当前压缩类空间大小
-
YGC:年轻代gc次数
-
FGC:老年代GC次数
Linux使用jstat命令查看jvm的GC情况
Options,选项,我们一般使用 -gcutil 查看gc情况 vmid,VM的进程号,即当前运行的java进程号 interval,间隔时间,单位为秒或者毫秒 count,打印次数,如果缺省则打印无数次
通常运行命令如下:
jstat -gcutil 12538 5000
即会每5秒一次显示进程号为12538的java进成的GC情况,
显示内容如下图:
jstat -gcutil 28363 1s
jstat -gccause pid 1 每格1毫秒输出结果
jstat -gccause pid 2000 每格2秒输出结果
1 |
|
说明
1 2 3 4 5 6 7 |
|
显示内容说明如下(部分结果是通过其他其他参数显示的,暂不说明):
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制