Here you can find the source of allocateDirectBuffer(int size)
public static ByteBuffer allocateDirectBuffer(int size)
//package com.java2s; /*/*from w ww. j ava 2s . c om*/ This file is part of jpcsp. Jpcsp is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Jpcsp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Jpcsp. If not, see <http://www.gnu.org/licenses/>. */ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import java.nio.IntBuffer; import java.nio.ShortBuffer; public class Main { protected static int directBufferSize = 100; protected static ByteBuffer directBuffer = ByteBuffer.allocateDirect(directBufferSize) .order(ByteOrder.nativeOrder()); public static ByteBuffer allocateDirectBuffer(int size) { if (size > directBufferSize) { directBufferSize = size; directBuffer = ByteBuffer.allocateDirect(directBufferSize).order(ByteOrder.nativeOrder()); } directBuffer.clear(); directBuffer.limit(size); return directBuffer; } public static ByteBuffer allocateDirectBuffer(ByteBuffer buffer) { if (buffer.isDirect()) { return buffer; } return allocateDirectBuffer(buffer.remaining()); } public static IntBuffer allocateDirectBuffer(IntBuffer buffer) { if (buffer.isDirect()) { return buffer; } return allocateDirectBuffer(buffer.remaining() << 2).asIntBuffer(); } public static ShortBuffer allocateDirectBuffer(ShortBuffer buffer) { if (buffer.isDirect()) { return buffer; } return allocateDirectBuffer(buffer.remaining() << 1).asShortBuffer(); } public static FloatBuffer allocateDirectBuffer(FloatBuffer buffer) { if (buffer.isDirect()) { return buffer; } return allocateDirectBuffer(buffer.remaining() << 2).asFloatBuffer(); } }