JDK-8199674 : Improve G1 Full GC array marking
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 11
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2018-03-15
  • Updated: 2018-04-04
  • Resolved: 2018-03-16
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 11
11 b07Fixed
Related Reports
Relates :  
Description
Currently when marking an object array it is split up to avoid one worker doing all the work. The code iterates over a chunk of the array and then push the rest to the marking stack, the problem with this is that if the iteration it self don't find any new pointers to follow, the next thing to do is to handle the next chunk in the array. This make work-stealing problematic for this case and the performance far from optimal.

There are many schemes that can be used to improve the situation and we might want to dig into this more at some point but an easy fix to push the rest of the array onto the mark stack before doing the iteration actually helps quite a bit, since the window when work stealing is possible increases a lot.