G1 Garbage Collector: Why survivor space is always full?
My observations.
-
G1GC is efficient when you stop customizing some of the parameters. I suggest to remove
Xmn
( young gen) setting. -
Set different values of
-Xms
and-Xmx
-
Region size should be configured as Maximum heap memory size / 2048. For 4G heap, 2 MB should be region size & for 2 GB heap, 1 MB should be ideal region size.
-
key parameters to be configured :
-XX:G1HeapRegionSize=n, XX:MaxGCPauseMillis=m, -XX:ParallelGCThreads=n, -XX:ConcGCThreads=n
apart from-Xms and -Xmx
Have a look at this SE post and infoQ article for more details.
Recommendation from Oracle
When you evaluate and fine-tune G1 GC, keep the following recommendations in mind:
Young Generation Size: Avoid explicitly setting young generation size with the -Xmn option or any or other related option such as -XX:NewRatio. Fixing the size of the young generation overrides the target pause-time goal.
Pause Time Goals: When you evaluate or tune any garbage collection, there is always a latency versus throughput trade-off.
Comments
-
Neo almost 2 years
Here is the output of
jmap -heap
command:Survivor Space: regions = 52 capacity = 54525952 (52.0MB) used = 54525952 (52.0MB) free = 0 (0.0MB) 100.0% used
I've executed it many times and I found that the value of
capacity
is alway equal toused
.My question is why survivor space is alway full(and so small)? I've specified
-Xmx2200m -Xms2200m -Xmn1100m
. (I expect the survivor space should be 220M, which means there should be more space for survivor region)-- update--
Full output of jheap:
Garbage-First (G1) GC with 2 thread(s) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 2306867200 (2200.0MB) NewSize = 1153433600 (1100.0MB) MaxNewSize = 1153433600 (1100.0MB) OldSize = 4194304 (4.0MB) NewRatio = 2 SurvivorRatio = 8 MetaspaceSize = 16777216 (16.0MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 4294963200 (4095.99609375MB) G1HeapRegionSize = 1048576 (1.0MB) Heap Usage: G1 Heap: regions = 14488 capacity = 15191769088 (14488.0MB) used = 1083703304 (1033.5000076293945MB) free = 14108065784 (13454.499992370605MB) 7.13348983730946% used G1 Young Generation: Eden Space: regions = 988 capacity = 1163919360 (1110.0MB) used = 1035993088 (988.0MB) free = 127926272 (122.0MB) 89.009009009009% used Survivor Space: regions = 45 capacity = 47185920 (45.0MB) used = 47185920 (45.0MB) free = 0 (0.0MB) 100.0% used G1 Old Generation: regions = 2 capacity = 1095761920 (1045.0MB) used = 524296 (0.5000076293945312MB) free = 1095237624 (1044.4999923706055MB) 0.04784762003775419% used 30424 interned Strings occupying 3027304 bytes.