-
Enhancement
-
Resolution: Fixed
-
P4
-
19
-
b10
When a node is released back to the BufferNode allocator, it is placed on the pending list (a LockFreeStack) to await batch transfer to the free list. When that transfer is performed, the accumulated pending list needs to be walked to find the last node, for use in the prepend of the pending list to the free list.
If we change the allocator to double-buffer the pending list, we can capture the initially added element as the tail of the list. Transfer flips the active pending list. We can then take the head/tail of the deactivated pending list and directly prepend to the free list, without needing a list walk to find the last node.
If we change the allocator to double-buffer the pending list, we can capture the initially added element as the tail of the list. Transfer flips the active pending list. We can then take the head/tail of the deactivated pending list and directly prepend to the free list, without needing a list walk to find the last node.
- is blocked by
-
JDK-8280437 Move G1BufferNodeList to gc/shared
-
- Resolved
-