RFR: 8351374: Improve comment about queue.remove timeout in CleanerImpl.run

Brent Christian bchristi at openjdk.org
Mon Mar 10 23:16:54 UTC 2025


On Fri, 7 Mar 2025 23:17:53 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

> Please review this revision of a previously puzzling comment intending to
> provide the rationale for a bit of non-obvious code.

src/java.base/share/classes/jdk/internal/ref/CleanerImpl.java line 142:

> 140:                 // while there are registered cleanables for other objects.
> 141:                 // If the application cleans all remaining cleanables, there
> 142:                 // won't be any references enqueued to unblock this.  Using a

I agree that calling `queue.remove()` with a timeout is the right approach.
But I have a question:
In the case where the Cleaner's `CleanerCleanable` has already run, and we get to processing the last registered cleanable on `activeList`:
When we do the `ref.clean()`, the `activeList` becomes empty, and we'll drop out of the `while()` loop. So I'm not seeing how we would attempt another `queue.remove()` in this case.
What am I missing?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23952#discussion_r1988140719


More information about the core-libs-dev mailing list