Currently G1 switches the mark bitmaps during the Cleanup pause, making the recent object liveness gathering visible to G1 there.
Since the mark bitmaps are current after Remark, switching them during Cleanup only prolongs the time when already dead objects are kept live.
The only use of the next bitmap between these two phases seems to be gathering summary live data - however it could as easily use the other bitmap for that purpose during that time
This may or may not make a difference particularly in conjunction with eager reclaim, as this would allow releasing humongous objects earlier (noticed e.g. in specjvm2008-sparse.large and fft.large if you artificially lengthen the time between remark and cleanup pause).
Investigate if there are any additional side effects swapping the bitmaps earlier and if possible, switch the mark bitmaps immediately at remark.
This behavior has been this way since day one. However, withJDK-8077144 the pause between Remark and Cleanup has been lengthened significantly (although overall that change decreased the length of the marking cycle).
Implementing this will shorten the time between start of marking and being able to reclaim found dead objects significantly.
Since the mark bitmaps are current after Remark, switching them during Cleanup only prolongs the time when already dead objects are kept live.
The only use of the next bitmap between these two phases seems to be gathering summary live data - however it could as easily use the other bitmap for that purpose during that time
This may or may not make a difference particularly in conjunction with eager reclaim, as this would allow releasing humongous objects earlier (noticed e.g. in specjvm2008-sparse.large and fft.large if you artificially lengthen the time between remark and cleanup pause).
Investigate if there are any additional side effects swapping the bitmaps earlier and if possible, switch the mark bitmaps immediately at remark.
This behavior has been this way since day one. However, with
Implementing this will shorten the time between start of marking and being able to reclaim found dead objects significantly.
- blocks
-
JDK-8154528 Reclaim regions emptied by marking in Remark pause
-
- Resolved
-
-
JDK-8199407 Skip Rebuild Remset Phase if there are no rebuild candidates
-
- Resolved
-
- is blocked by
-
JDK-8199742 Clean up state flags in G1CollectorState
-
- Resolved
-
- relates to
-
JDK-8200731 Assert in rebuild remset closure uses the wrong liveness in informational text
-
- Closed
-
-
JDK-8180415 Rebuild remembered sets during the concurrent cycle
-
- Resolved
-
-
JDK-8077144 Concurrent mark initialization takes too long
-
- Closed
-
(1 relates to)