RFR: 8343704: Bad GC parallelism with processing Cleaner queues [v13]
Aleksey Shipilev
shade at openjdk.org
Wed Nov 20 09:19:39 UTC 2024
On Wed, 20 Nov 2024 00:50:01 GMT, Brent Christian <bchristi at openjdk.org> wrote:
>> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Use RandomFactory in test
>
> src/java.base/share/classes/jdk/internal/ref/PhantomCleanable.java line 55:
>
>> 53: * Synchronized by the same lock as the list itself.
>> 54: */
>> 55: CleanerImpl.CleanableList.Node node;
>
> I think we can get away with not storing a `Node` in every `PhantomCleanable`, and instead look for it at `index` in each `Node` in the list. But I don't know if this would be a performance win. Heap savings (in `PhantomCleanableRef`)? Worse locality from loading multiple `Nodes`?
> Just an idea...
I don't think this is a great idea: it means linear search under the lock, which I don't think we want. As it stands now, we are doing removals in constant time. Current version also affects the footprint positively already: we change 3 references into 2 references + 1 int, so there is no pressing need for smartness in optimizing the footprint.
> test/jdk/jdk/internal/ref/Cleaner/CleanableListTest.java line 126:
>
>> 124: bs.set(idx, true);
>> 125: }
>> 126: }
>
> Can the test remove everything left in the list after doing the `RANDOM_ITERATIONS`?
Done in new commit.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/22043#discussion_r1849918892
PR Review Comment: https://git.openjdk.org/jdk/pull/22043#discussion_r1849920309
More information about the core-libs-dev
mailing list