8202252: (aio) Closed AsynchronousSocketChannel keeps completion handler alive

Alan Bateman Alan.Bateman at oracle.com
Wed Jun 27 15:25:21 UTC 2018

On 26/06/2018 19:59, Brian Burkhalter wrote:
> https://bugs.openjdk.java.net/browse/JDK-8202252
> http://cr.openjdk.java.net/~bpb/8202252/webrev.00/
> Set instance variables {connect,read,write}Handler to null to allow the respective objects to be GCed.
> Without applying the source portion of the patch, the test fails on Linux, macOS, and Solaris.
The updates to finishRead and finishWrite look okay. The change to set 
connectHandler to null needs more checking, I can't immediately say if 
this if right. Is this part of a series of patches? I assumed the 
Windows code would be changed, also the AsynchronousServerSocketChannel 

The test does this:


The more usual check is something like this:

while (ref.get() != null) { Thread.sleep(20); }

so that the test waits until the reference is cleared.

Is there a reason why the thread uses a custom channel group? I assume 
it can use the default channel group, would reduce the code a bit if you 


More information about the nio-dev mailing list