This duplicate buffer thing can be a very useful tool to avoid making
unnecessary copies of in-memory data. The slice() and asIntBuffer(),
asCharBuffer(), etc, methods all work in the same way. On the flip
side, if you take a small slice from a larger buffer and never use the
rest, you may end up holding on to more memory than you have to.

Barend



On Thu, Oct 2, 2008 at 11:40 PM, W.B. Garvelink
<[EMAIL PROTECTED]> wrote:
> Hi Andres,
>
>
> Yep, there's another way, and I'll admit I was hoping you'd ask ;-).
> Take a look at the ByteBuffer.duplicate() method:
>
>> Creates a new byte buffer that shares this buffer's content.
>>
>> The content of the new buffer will be that of this buffer. Changes
>> to this buffer's content will be visible in the new buffer, and
>> vice versa; the two buffers' position, limit, and mark values will
>> be independent.
>>
>> The new buffer's capacity, limit, position, and mark values will
>> be identical to those of this buffer.
>
> You can create a second ByteBuffer "view" on the same in-memory data, use one
> to your reads and the other to do your writes. They both start at the
> same position and they both have the same limit, so if you read from one and 
> write
> to the other within the loop body, they stay in sync.
>

Reply via email to