-
Enhancement
-
Resolution: Fixed
-
P4
-
20
-
b20
- one or two blocks of "open" type, and one or two blocks of "closed" type
After
Still, having the two separate blocks makes the runtime mapping code complicated. Also, G1 has special handling for the "archive regions" used for mapping these blocks. See
https://github.com/openjdk/jdk/blob/6065696e5df2cde8c313083217ead3417d04c365/src/hotspot/share/gc/g1/heapRegionType.hpp#L80-L91
It's unclear that such special handling has any performance benefit. Objects in the CDS archive heap are expected to have a long lifecycle and are infrequently modified. It should be sufficient to place these objects into the old generation (for any generational collector, not just G1).
********************************
Proposal:
- Combine all objects in the CDS archive heap into a single, contiguous block.
- Remove "archive region" handling from G1
- At runtime, allocate one or several contiguous G1 regions for mapping the CDS archive heap. These regions are marked as in the old generation.
*********************************
Similar mapping code will be implemented in other collectors in follow-up RFEs.
- blocks
-
JDK-8296263 Uniform APIs for mapping archived heap regions
- Closed
- is blocked by
-
JDK-8301106 Allow archived Java strings to be moved by GC
- Resolved
- relates to
-
JDK-8309135 Regression 3-7% on Dacapo fop
- Closed
-
JDK-8298614 Support CDS heap dumping for SerialGC and ParallelGC
- Resolved
-
JDK-8306733 Remove template parameter of G1DetermineCompactionQueueClosure::free_pinned_region
- Resolved
-
JDK-8341913 Support CDS heap dumping for Shenandoah and Epsilon
- Resolved
-
JDK-8245859 Enhance G1 Support for Open Archive Heap Region
- Open
-
JDK-8296344 Remove dependency on G1 for writing the CDS archive heap
- Resolved