-
Enhancement
-
Resolution: Fixed
-
P4
-
9, 10
-
b10
a significant footprint and throughput overhead. The footprint overhead
is the result of storing the remembered set information, the throughput
overhead results from executing the slow paths of the post-write barrier
and the refinement work.
Some remembered sets need to be maintained always, i.e. the ones for the
young generation to allow evacuation. However, G1 only actually needs
the remembered sets for the old gen regions G1 intends to evacuate
during and while executing a mixed GC phase.
In many larger applications the old gen remembered sets are much larger
than the young gen ones.
Given a way to rebuild the remembered sets on demand, these observations
may allow us to avoid managing the remembered sets for a large part of
the heap most of the time:
- all of them during the young-only phase
- old regions without marking information ("to" regions since the last
concurrent mark cycle)
- old regions with too many live objects to make them worth evacuating
- humongous regions
- any other regions that we are not going to collect for any reason.
E.g. the user can set a global/local footprint overhead, a liveness
threshold, or use any other information about the application.
The suggestion here is to use concurrent mark for rebuilding remembered
sets. Concurrent mark already traverses the entire object graph, so it
can determine the remembered sets for any given region in conjunction
with the barriers. While this will significantly lengthen the concurrent
mark phase, the benefits for throughput and memory footprint may
outweigh this, resulting in an overall win.
(from http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2016-November/019217.html)
- blocks
-
JDK-8197573 Remove concurrent cleanup and secondary free list handling
- Resolved
-
JDK-8197928 Only enqueue deferred cards with references into regions that have a tracked remembered set during GC
- Resolved
-
JDK-8197932 Better split work in rebuild remembered sets phase
- Resolved
-
JDK-8199326 Remove G1 gc time stamp logic
- Resolved
- is blocked by
-
JDK-8197569 Refactor eager reclaim for concurrent remembered set rebuilding
- Resolved
-
JDK-8197570 Make rules for choosing collection set candidates more explicit
- Resolved
-
JDK-8197850 Calculate liveness in regions during marking
- Resolved
- relates to
-
JDK-8204081 Mismatch in rebuild policy and collection set chooser causes remembered sets to be kept errorneously
- Resolved
-
JDK-8198419 Track per-region incoming refs during mark to improve rebuild candidate selection
- Open
-
JDK-8017163 G1: Refactor remembered sets
- Resolved
-
JDK-8200305 Update gc,liveness output with remset state after rebuild remset concurrently changes
- Resolved
-
JDK-8151125 Unify clearing mark bitmaps and concurrent mark data structures
- Closed
-
JDK-8202842 G1 footprint regressions in jdk11+10
- Closed
-
JDK-8154528 Reclaim regions emptied by marking in Remark pause
- Resolved
-
JDK-8178105 Switch mark bitmaps during Remark
- Resolved
-
JDK-8262185 G1: Prune collection set candidates early
- Resolved
-
JDK-7187490 G1: Limit the amount of remembered set scrubbing
- Closed