RFR: 8332154: Memory leak in SynchronousQueue [v3]
Viktor Klang
vklang at openjdk.org
Mon May 20 15:17:17 UTC 2024
On Mon, 20 May 2024 14:49:13 GMT, Alan Bateman <alanb at openjdk.org> wrote:
>> Viktor Klang has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Moving the memory leak test for SynchronousQueue into its own test and runs only for JDK20+, using VirtualThreads
>
> Looks okay, I just wonder how reliable assertDoesntLeak with concurrent agents, debug builds, and VM options such as a Xcomp that will challenge the await(10s). Minimally the timed awaits should be untimed. Another idea is try an ES like this:
>
> try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
> for (int i = 0; i < NUMBER_OF_ITEMS; i++) {
> executor.submit( .. producer .. );
> executor.submit(.. consumer ..);
> }
> }
>
> No need for the count down latches or the need to retry on InterruptedException. The close method waits for the 400 virtual threads to finish so you can assert that the queue is empty.
>
> The loop that waits for survivors to empty can be unbounded too. If there is a leak then the test will timeout.
@AlanBateman Great suggestions, Alan. I've updated the PR to reflect your improvements.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19271#issuecomment-2120665477
More information about the core-libs-dev
mailing list