RFR: 8343704: Bad GC parallelism with processing Cleaner queues [v14]
Aleksey Shipilev
shade at openjdk.org
Mon Nov 25 08:35:22 UTC 2024
On Sat, 23 Nov 2024 01:38:00 GMT, Brent Christian <bchristi at openjdk.org> wrote:
> Though, for this test, CleanableList itself is not being walked.
I think this is a matter of definition of "CleanableList itself is not being walked".
The Java code does not walk the list in this test, but GC does the walk the list as part of GC cycle. This is what this test sets up: it builds the large list of cleanable objects, makes sure the cleanable objects are reachable, so associated cleaners stay in the list, and then forces GC to mark the entire heap. When there is a large linked list formed by old `ClenableList` implementation, GC times suffer, because GC cannot parallelize marking work. This is why this benchmark improves with new implementation: GC becomes more parallel/efficient.
> So this test measures what effect, if any, the conversion from the old linked list to new CleanableList has on GC, when referents are not becoming unreachable.
Yes. And "if any" in this test shows up as 2..3x improvement in GC times :)
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/22043#discussion_r1856115040
More information about the core-libs-dev
mailing list