Java ByteBuffer的compact()之后的位置设置为0

Java ByteBuffer的compact()之后的位置设置为0,java,nio,Java,Nio,通常,在调用ByteBuffer的compact()后,我会看到新位置将设置为旧限制,以便缓冲区可以进行put() 但有时,在调用compact()之后,我看到ByteBuffer(limit=capacity)中的位置是0。如果是这样,那么只有在调用compact之前的位置=容量(或位置=限制)时才会发生这种情况吗 ByteBuffer的javadoc说“然后将缓冲区的位置设置为n+1,并将其限制设置为其容量。”,但我似乎在我的程序中看到该位置设置为0。如果从缓冲区中删除所有内容,则会发生这种

通常,在调用ByteBuffer的compact()后,我会看到新位置将设置为旧限制,以便缓冲区可以进行put()

但有时,在调用compact()之后,我看到ByteBuffer(limit=capacity)中的位置是0。如果是这样,那么只有在调用compact之前的位置=容量(或位置=限制)时才会发生这种情况吗


ByteBuffer的javadoc说“然后将缓冲区的位置设置为n+1,并将其限制设置为其容量。”,但我似乎在我的程序中看到该位置设置为0。

如果从缓冲区中删除所有内容,则会发生这种情况,因此它与
clear()相同.
这意味着事先
位置=限制