Skip to content

Instantly share code, notes, and snippets.

@bluestreak01
Last active August 29, 2015 14:05
Show Gist options
  • Save bluestreak01/b8b05d660aebab7c6428 to your computer and use it in GitHub Desktop.
Save bluestreak01/b8b05d660aebab7c6428 to your computer and use it in GitHub Desktop.
DirectBuffer release example
/**
* Releases ByteBuffer if possible. Call semantics should be as follows:
* <p/>
* ByteBuffer buffer = ....
* <p/>
* buffer = release(buffer);
*
* @param buffer direct byte buffer
* @return null if buffer is released or same buffer if release is not possible.
*/
public static <T extends ByteBuffer> T release(final T buffer) {
if (buffer != null) {
if (buffer instanceof DirectBuffer) {
Cleaner cleaner = ((DirectBuffer) buffer).cleaner();
if (cleaner != null) {
cleaner.clean();
return null;
}
}
}
return buffer;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment