一尘不染

增长的ByteBuffer

java

有没有人看过java.nio.ByteBuffer的实现,如果putX()调用超出容量,该实现会动态增长?

我想这样做的原因有两个:

  1. 我不知道我需要多少空间。
  2. 我宁愿不要在每次空间不足时都执行一个新的ByteBuffer.allocate()而不是一个批量put()。

阅读 224

收藏
2020-12-03

共1个答案

一尘不染

为了使异步I /
O起作用,您必须具有连续的内存。在C中,您可以尝试重新分配一个数组,但是在Java中,您必须分配新的内存。您可以写入ByteArrayOutputStream,然后ByteBuffer在准备发送时将其转换为。缺点是您正在复制内存,而高效IO的关键之一就是减少内存的复制次数。

2020-12-03