In this example we are going to demonstrate several methods of creating a direct (memory-mapped) and non-direct ByteBuffer in Java.
Given a direct byte buffer, the Java virtual machine will make a best effort to perform native I/O operations directly upon it. That is, it will attempt to avoid copying the buffer’s content to (or from) an intermediate buffer before (or after) each invocation of one of the underlying operating system’s native I/O operations.
// Create a byte array byte bytes = new byte; // Wrap a byte array into a buffer ByteBuffer buf = ByteBuffer.wrap(bytes); // Allocate a new non-direct byte buffer with a 10 byte capacity // The underlying storage is a byte array. buf = ByteBuffer.allocate(10); // Allocatea new direct (memory-mapped) byte buffe with a 10 byte capacity buf = ByteBuffer.allocateDirect(10);
This was an example of how to create direct and non-direct ByteBuffer in Java.