JDK-8219613 : Use NonJavaThread PtrQueues
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 13
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2019-02-23
  • Updated: 2019-03-19
  • Resolved: 2019-03-06
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 13
13 b11Fixed
Related Reports
Blocks :  
Relates :  
Relates :  
Relates :  
Relates :  
Description
G1 allocates a SATBMarkQueue and a G1DirtyCardQueue in each Thread, but only uses the queues in Java threads. For non-Java threads, operations that need a queue presently use the shared queue in the associated queue set in the barrier set. This leads to contention problems in some places, since the shared queues involve locking. It would be better if the already allocated per-thread queues in the non-Java threads were also used.

Note that this doesn't eliminate the need for the shared queues (JDK-8209974).  There are places that can't be converted from using a shared queue to instead using the corresponding thread-local queue.