Hi
When you pass an array in case a direct NIO buffer could be passed instead, a new direct NIO buffer is created. Moreover, such buffers are used to communicate with native APIs. Methods taking arrays are there for convenience but shouldn't be used, passing buffers has a lower memory footprint and is faster especially when you use them correctly. Keep in mind that indirect NIO buffers are allocated on the Java heap but they can't be passed to some methods accepting buffers and direct NIO buffers are allocated on the native heap which is under your responsibility (you have to release native resources by yourself and there is no public API to do that in Java 1.7).