RFR: 8316156: (ch) Channels.newOutputStream(ch).write(bigByteArray) allocates a lot of direct memory [v4]

Alan Bateman alanb at openjdk.org
Fri Sep 15 06:41:39 UTC 2023


On Thu, 14 Sep 2023 22:51:10 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:

>> In `ChannelInputStream` and `ChannelOutputStream`, process small chunks of bytes in sequence to avoid running afoul of the `MaxDirectMemorySize`.
>
> Brian Burkhalter has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8316156: Read at most DEFAULT_BUFFER_SIZE bytes

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 71:

> 69:             return 0;
> 70: 
> 71:         bb.limit(pos + Integer.min(rem, Streams.DEFAULT_BUFFER_SIZE));

I assume we would end up with a MAX_BUFFER_SIZE that is something like 128k, like we ended up in NioSocketImpl for the same reason. In order words, it's different to the chunk size that is DEFAULT_BUFFER_SIZE today.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/15733#discussion_r1326863659


More information about the nio-dev mailing list