JDK-8276098 : Do precise BOT updates in G1 evacuation phase
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 18
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2021-10-28
  • Updated: 2022-06-10
  • Resolved: 2021-11-09
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 18
18 b23Fixed
Related Reports
Relates :  
Relates :  
Description
In G1 young collections the BOT is updated for objects copied to old generation regions. The BOT updates are very crude and only done for each new PLAB and for direct allocations (large allocation outside the PLABs). 

The BOT is then updated to be more precies during concurrent refinement and when scanning the heap in later GCs. This leads to both more time spent doing concurrent refinement as well as prolonged "scan heap" phases in the following GCs. 

If we instead update the BOT to be complete while doing the copy we can reduce the time in the following phases quite significantly. This comes with a slight regression in object copy times, but from my measurements the overall gain is positive.
Comments
Changeset: 945f4085 Author: Stefan Johansson <sjohanss@openjdk.org> Date: 2021-11-09 11:11:23 +0000 URL: https://git.openjdk.java.net/jdk/commit/945f4085e5c51f37c2048bb221a1521895ba28c6
09-11-2021