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.
Rémi
More information about the nio-dev
mailing list