我需要Java中的字节缓冲区类用于单线程使用。缓冲区应该在它满时调整大小,而不是抛出异常或其他东西。对我来说非常重要的问题是表现。
你会推荐什么?
增加: 在我使用ByteBuffer,但它不能调整大小。我需要一个可以调整大小。
答案 0 :(得分:9)
有什么理由不使用无聊的普通ByteArrayOutputStream?
正如上面的miku所提到的,Evan Jones gives a review of different types并表明它非常依赖于应用程序。因此,在不了解更多细节的情况下,很难推测。
我将从ByteArrayOutputStream开始,并且只有在分析显示它是你的性能瓶颈转移到其他东西时。通常当您认为缓冲区代码是瓶颈时,它实际上将是网络或其他IO - 等到分析显示您需要优化之后才浪费时间寻找替代品。
如果您正在转向别的事情,那么您需要考虑其他因素:
答案 1 :(得分:2)
您可以使用直接的ByteBuffer。直接内存使用虚拟内存开始时仅在使用时分配给应用程序。即它使用的主存储量自动重新调整大小。
创建一个比你需要的更大的直接ByteBuffer,它只会消耗你使用的东西。
答案 2 :(得分:2)
你也可以编写用于连续检查缓冲区内容的手动代码,如果它是真实的,那么创建一个更大的新缓冲区并移动新缓冲区中的所有数据。