Hi Chris,

On 12/11/2016 10:26 AM, Chris Hegarty wrote:
>"Deallocates the underlying memory associated with given directBuffer if the 
buffer was obtained from either {@link ByteBuffer#allocateDirect} or {@link 
FileChannel#map} methods. In any other case (when the buffer is not a direct buffer or 
was obtained by  {@link ByteBuffer#duplicate() duplicating} or {@link 
ByteBuffer#slice(int, int) slicing} a direct buffer), the method throws {@code 
IllegalArgumentException}.
Yes, but given a ByteBuffer it is not possible to determine if it “owns” the
memory, or not. So users of the API would have to have full knowledge of
the buffers they pass to it. Maybe this is ok?

-Chris.

In order for deallocation to be effective and, above all, safe, user has to know the whole story of a buffer (s)he intends to deallocate and the story of all possible derived buffers. I don't believe one can create a safe program by choosing to deallocate a direct buffer for which (s)he does not know where it came from, because then (s)he also doesn't know what other buffers might still be using the same piece of memory.

Regards, Peter

Reply via email to