jstat : Survivor 和 Eden Space 容量在一段时间内减少

jstat : Survivor and Eden Space capacity decrease over a period

在 JVM 重新启动之前,java(8) 内存容量是否会减少?

我正在使用 jstat -gc 转储内存信息,这是两天的快照。与第一个快照相比,第二个快照的 SC1 和 EC 容量更少。

谁能help/explain 为什么我会看到这种行为?这是预期的吗?

Java version : java-1.8.0-openjdk-1.8.0.191.b12

sc1: survivor space 1 capacity  
EC: eden space capacity 

S0C,    S1C,  S0U,  S1U,EC,EU,OC,OU,MC,MU,CCSC,CCSU,YGC,YGCT,FGC,FGCT,GCT
4096.0,7168.0,3968.3,0.0,123904.0,54705.9,101888.0,24165.6,62464.0,60100.6,7168.0,6618.4,30,1.314,3,0.298,1.612  
5632.0,4096.0,0.0,4000.2,113152.0,56035.3,101888.0,24165.6,62720.0,60145.3,7168.0,6620.0,33,1.345,3,0.298,1.643

有一个控制标志:-XX:+UseAdaptiveSizePolicy,默认情况下启用。根据您拥有的目标暂停时间(我假设您正在使用 G1),此标志的作用是根据它收集的启发式方法增加或减少某些区域。了解它到底做了什么的最好方法是 G1 本身的源代码。