在Java中快速擦除(不清楚)ByteBuffer

ask*_*der 13 java bytebuffer erase

我试图"清理"a ByteBuffer为所有零字节(全部0x00).我试图遍历缓冲区中的所有位置并将它们设置为0x00,但效率很差.有没有更好的方法来快速清除ByteBuffer- 类似于什么BitSet.clear()

请注意,ByteBuffer.clear()在这种情况下,对我来说这不是一个合适的解决方案 - 我必须擦除缓冲区内的所有数据,而不仅仅是将指针重置为开头.

任何提示?

编辑:ByteBuffer用作哈希表的一部分,它维护哈希表条目的引用.每次需要刷新哈希表时,我都必须重置哈希表条目以便以后的哈希表插入.由于以随机方式访问哈希表,我不能简单地清除()字节缓冲区的状态.

DNA*_*DNA 7

您是否尝试过使用其中一种ByteBuffer.put(byte[])ByteBuffer.put(ByteBuffer)多种方法一次写入多个零?然后,您可以使用预先填充零的数组或缓冲区,以100或1000字节或其他任何方式迭代缓冲区.

缺点:这是一个可选操作,因此并非所有ByteBuffer实现都需要提供它...

  • 很抱歉这个迟到的回复,但这种方法确实可以减少刷新开销.我已经看到冲洗时间从~60ms减少到~2ms.会看看它是否足够好. (3认同)