Mercurial > hg > release > icedtea7-forest-2.6 > jdk
changeset 9688:7c556f6c8711
8206290: Better FileChannel transfer performance
Reviewed-by: alanb, rhalade, mschoene
author | igerasim |
---|---|
date | Fri, 28 Sep 2018 23:04:10 -0700 |
parents | b7f790390313 |
children | c85507fa74f8 |
files | src/share/classes/sun/nio/ch/FileChannelImpl.java |
diffstat | 1 files changed, 2 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/sun/nio/ch/FileChannelImpl.java Wed Jul 25 13:39:13 2018 -0700 +++ b/src/share/classes/sun/nio/ch/FileChannelImpl.java Fri Sep 28 23:04:10 2018 -0700 @@ -540,11 +540,10 @@ { // Untrusted target: Use a newly-erased buffer int c = Math.min(icount, TRANSFER_SIZE); - ByteBuffer bb = Util.getTemporaryDirectBuffer(c); + ByteBuffer bb = ByteBuffer.allocate(c); long tw = 0; // Total bytes written long pos = position; try { - Util.erase(bb); while (tw < icount) { bb.limit(Math.min((int)(icount - tw), TRANSFER_SIZE)); int nr = read(bb, pos); @@ -565,8 +564,6 @@ if (tw > 0) return tw; throw x; - } finally { - Util.releaseTemporaryDirectBuffer(bb); } } @@ -650,11 +647,10 @@ { // Untrusted target: Use a newly-erased buffer int c = (int)Math.min(count, TRANSFER_SIZE); - ByteBuffer bb = Util.getTemporaryDirectBuffer(c); + ByteBuffer bb = ByteBuffer.allocate(c); long tw = 0; // Total bytes written long pos = position; try { - Util.erase(bb); while (tw < count) { bb.limit((int)Math.min((count - tw), (long)TRANSFER_SIZE)); // ## Bug: Will block reading src if this channel @@ -675,8 +671,6 @@ if (tw > 0) return tw; throw x; - } finally { - Util.releaseTemporaryDirectBuffer(bb); } }