Index: src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java =================================================================== --- src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java (revision 546816) +++ src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java (working copy) @@ -585,6 +585,7 @@ long[] handles = new long[length]; int[] offsets = new int[length]; int[] lengths = new int[length]; + ByteBuffer[] tempBuffer = new ByteBuffer[length]; for (int i = 0; i < length; i++) { ByteBuffer buffer = buffers[i + offset]; if (!buffer.isDirect()) { @@ -597,6 +598,7 @@ } else { offsets[i] = buffer.position(); } + tempBuffer[i] = buffer; handles[i] = ((DirectBuffer) buffer).getEffectiveAddress().toLong(); lengths[i] = buffer.remaining(); } @@ -612,6 +614,15 @@ } finally { end(completed); } + + // the code below is for JIT tricking - tempBuffer should not be GC-ed + boolean alwaysFalse = (System.currentTimeMillis() < 0); + + if (alwaysFalse) { + for (int i = 0; i < tempBuffer.length; ++i) { + System.out.println(tempBuffer[i]); + } + } } long bytesRemaining = bytesWritten;