6999915: TEST_BUG: test/java/nio/channels/AsynchronousSocketChannel/Leaky.java failed intermittently (win)

Rémi Forax forax at univ-mlv.fr
Mon Nov 15 05:01:15 PST 2010

  Le 15/11/2010 13:08, Alan Bateman a écrit :
> This is a test fix, to address an illusive test failure that  happens 
> intermittently when running on legacy editions of Windows installed on 
> fast machines. To understand the test failure requires a bit of 
> background:
> 1. Legacy editions of Windows (XP and Windows Server 2003) don't 
> support thread agnostic I/O. When an attempt is made to initiate an 
> I/O operation on a non-pooled thread, as in this test, then it causes 
> a task to be submitted to the thread pool so that the I/O operation is 
> initiated on a pooled thread.
> 2. The default thread pool, as used by this test, is a cached thread 
> pool and so creates threads as needed.
> 3. I/O operations on ByteBuffers that are backed by an array in the 
> heap require copying the bytes in/out of temporary direct buffers. To 
> avoid a malloc/free per I/O operation, the direct buffers are 
> maintained in per-thread cache. In this test, each thread involved in 
> an I/O operations ends up with one 1MB buffer in its cache.
> All combined, it is possible for the hread pool to grow to more than 
> 64 threads, after which OutOfMemoryError is thrown because the tests 
> limits the direct memory to 64MB. To avoid this, the test is changed 
> to use a fixed thread pool of 4 threads with the worst case being each 
> thread caches up to 8 1MB buffers over the 10k I/O operations that the 
> test performs.
> The webrev with the changes is here:
> http://cr.openjdk.java.net/~alanb/6999915/webrev/
> Thanks,
> Alan.

Looks OK.


More information about the nio-dev mailing list