Java中最好的可调整大小的字节缓冲区是什么?

问题描述

| 我需要Java中的字节缓冲区类供单线程使用。缓冲区已满时应调整大小,而不是抛出异常或其他内容。对我来说,非常重要的问题是性能。 你会推荐什么? 添加: 暂时我使用ByteBuffer,但是它无法调整大小。我需要一个可以调整大小的工具。     

解决方法

        有什么理由不使用无聊的普通ByteArrayOutputStream吗? 如上文miku所述,Evan Jones给出了不同类型的评论,并表明它非常依赖于应用程序。因此,在不知道更多细节的情况下很难推测。 我将从ByteArrayOutputStream开始,只有在分析显示这是您的性能瓶颈转移到其他地方时,才开始。通常,当您认为缓冲区代码是瓶颈时,它实际上是网络或其他IO-等到性能分析表明您需要优化后再浪费时间寻找替代物。 如果您要迁移到其他地方,则需要考虑其他因素: 您已经说过您正在使用单线程使用,所以不需要BAOS的同步 填充并注入的缓冲区是什么?如果任一端已经连接使用Java NIO,则使用直接ByteBuffer非常有效。 您使用的是圆形缓冲区还是普通的线性缓冲区?如果您是,那么Ostermiller实用程序将非常高效,并且GPL     ,        您可以使用直接的ByteBuffer。直接内存使用虚拟内存开始,仅在使用虚拟内存时才分配给该应用程序。即它使用的主内存量会自动调整大小。 创建一个大于您所需的直接ByteBuffer,它将仅消耗您使用的内容。     ,        您还可以编写手动代码来连续检查缓冲区内容,如果缓冲区内容已满,则制作一个更大的新缓冲区并将所有数据移入该新缓冲区。