Given the following heap region type layout at the start of a full GC:
SCCCscccSCCCOOO....
(Legend:
S = humongous starts region
C = humongous continues region
s = humongous starts region that is going to be freed in this full GC
c = humongous continues region to be freed in this full GC
O = region containing live old data
. = free region
)
At the end of full GC the heap looks like this:
SCCC...SCCCOOO....
I.e. during compaction the full GC did not consider the not live humongous regions as compaction targets. This may leave some space unnecessarily committed after full GC particularly as humongous objects are never moved.
SCCCscccSCCCOOO....
(Legend:
S = humongous starts region
C = humongous continues region
s = humongous starts region that is going to be freed in this full GC
c = humongous continues region to be freed in this full GC
O = region containing live old data
. = free region
)
At the end of full GC the heap looks like this:
SCCC...SCCCOOO....
I.e. during compaction the full GC did not consider the not live humongous regions as compaction targets. This may leave some space unnecessarily committed after full GC particularly as humongous objects are never moved.
- relates to
-
JDK-8048112 G1 Full GC needs to support the case when the very first region is not available
- Resolved
-
JDK-8172890 JEP 307: Parallel Full GC for G1
- Closed