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

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

  • 我不知道我需要多少空间。
  • 我宁愿不要在每次空间不足时都执行新的ByteBuffer.allocate()而不是大容量put()。
  • 最佳答案

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

    关于java - 增长的ByteBuffer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1774651/

    10-11 23:51