Java NIO Buffer类的主要用途是什么?

时间:2012-03-28 16:37:33

标签: java design-patterns buffer nio

我不明白,Buffer类的用途是什么。他们不是为了缓冲吗?我认为这应该意味着一个缓冲区对象应该允许同时和独立地读取和写入它。然而事实并非如此:缓冲区只允许一个position,单个读取和写入。这意味着如果我使用相对put()将某些内容写入缓冲区,那么我无法读取与相对get()敏感的内容。另外,如果我可以互换地呼叫put()get(),我会得到谵妄。

缓冲区有任何使用模式(样本)吗?那么很明显,那些缓冲区在某种程度上比传统阵列更好?

1 个答案:

答案 0 :(得分:2)

ByteBuffer用于读写数据,可以获取/放置许多原始类型并控制endianess。它们可以是直接内存(off heap)和内存映射文件(也是堆外)的包装器

它们可用于性能(因为它们可以在不组合字节的情况下本地访问长或双),直接字节缓冲区可以读取/写入数据而无需额外复制到“Java”存储器中。内存映射文件可以扩展到磁盘空间的大小,允许您使用大量内存而不会影响GC时间。