Buffer

buffer.png
public static ShortBuffer makeShortBuffer(short[] array) {
        if (array == null) throw new IllegalArgumentException();
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(array.length * 2);
        byteBuffer.order(ByteOrder.nativeOrder());
        ShortBuffer shortBuffer = byteBuffer.asShortBuffer();
        shortBuffer.put(array);
        shortBuffer.position(0);
        return shortBuffer;
    }

clear()

ByteBuffer のクリア。
limit ← capacity、 position ← 0、とします。

ByteBuffer.allocateDirect で確保したメモリを解放する方法

ByteBuffer.allocateDirect で確保したヒープ外のメモリを解放するには、オブジェクトの参照を全て外してから GC をする必要がある。別の方法としては、下記のページのように sun.misc.Cleaner を呼び出せば解放することができるようだ。

サポートサイト Wikidot.com