I have JVM argument (JVM 1.8.20)
-Xmx40M -Xms40M -verbose:gc -XX:+PrintGCDetails
and code:
public static void main(String[] args) {
byte[] memory = null;
int MB = 1024 * 1024;
int c = 0;
while(c++<10){
memory = new byte[(int) (10 * MB)];
}
}
There are GC after each iteration:
[GC (Allocation Failure) [DefNew: 932K->472K(12288K), 0.0010986 secs] 932K->472K(39616K), 0.0011674 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [DefNew: 10931K->472K(12288K), 0.0053905 secs] 10931K->10712K(39616K), 0.0054285 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [DefNew: 10712K->472K(12288K), 0.0057686 secs] 20952K->20952K(39616K), 0.0058082 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [DefNew: 10712K->10712K(12288K), 0.0000173 secs][Tenured: 20480K->10711K(27328K), 0.0041701 secs] 31192K->10711K(39616K), [Metaspace: 85K->85K(4480K)], 0.0042462 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [DefNew: 10240K->0K(12288K), 0.0033846 secs] 20951K->20951K(39616K), 0.0034223 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [DefNew: 10240K->10240K(12288K), 0.0000158 secs][Tenured: 20951K->10711K(27328K), 0.0040890 secs] 31191K->10711K(39616K), [Metaspace: 85K->85K(4480K)], 0.0041566 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [DefNew: 10240K->0K(12288K), 0.0026607 secs] 20951K->20951K(39616K), 0.0026945 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [DefNew: 10240K->10240K(12288K), 0.0000169 secs][Tenured: 20951K->10711K(27328K), 0.0039672 secs] 31191K->10711K(39616K), [Metaspace: 85K->85K(4480K)], 0.0040413 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [DefNew: 10240K->0K(12288K), 0.0026438 secs] 20951K->20951K(39616K), 0.0026780 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [DefNew: 10240K->10240K(12288K), 0.0000158 secs][Tenured: 20951K->10711K(27328K), 0.0037923 secs] 31191K->10711K(39616K), [Metaspace: 85K->85K(4480K)], 0.0038584 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
Looking at GC log, there are always 20M occupied in heap. however there should be 10M live object after each iteration.
Could you help me understand why there is 20M occupied?