有没有人看过java.nio.ByteBuffer的实现,如果putX()调用超出容量,该实现会动态增长?
我想这样做的原因有两个:
为了使异步I / O起作用,您必须具有连续的内存。在C中,您可以尝试重新分配一个数组,但是在Java中,您必须分配新的内存。您可以写入ByteArrayOutputStream,然后ByteBuffer在准备发送时将其转换为。缺点是您正在复制内存,而高效IO的关键之一就是减少内存的复制次数。
ByteArrayOutputStream
ByteBuffer