-
Enhancement
-
Resolution: Fixed
-
P4
-
13
-
b11
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.
Note that this doesn't eliminate the need for the shared queues (
- blocks
-
JDK-8209974 Eliminate shared PtrQueues
- Closed
- relates to
-
JDK-8220671 Initialization race for non-JavaThread PtrQueues
- Closed
-
JDK-8221102 Allow GC threads to participate in threads claiming protocol
- Closed
-
JDK-8220240 Refactor shared dirty card queue
- Resolved
-
JDK-8173211 G1: Enqueuing dirty cards during reference enqueuing in phase 3 does not scale
- Closed