Here you can find the source of cloneOnHeap(final ByteBuffer buf)
public static ByteBuffer cloneOnHeap(final ByteBuffer buf)
//package com.java2s; /**//from w w w . ja v a2 s. c om * Copyright 2008 - 2011 * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * * @project loonframework * @author chenpeng * @email?ceponline@yahoo.com.cn * @version 0.1 */ import java.nio.ByteBuffer; import java.nio.ByteOrder; public class Main { public static ByteBuffer cloneOnHeap(final ByteBuffer buf) { if (buf == null) { return null; } buf.rewind(); final ByteBuffer copy = createByteBufferOnHeap(buf.limit()); copy.put(buf); return copy; } public static ByteBuffer createByteBufferOnHeap(final int size) { final ByteBuffer buf = ByteBuffer.allocate(size).order( ByteOrder.nativeOrder()); buf.clear(); return buf; } public static ByteBuffer createByteBufferOnHeap(ByteBuffer buf, final int size) { if (buf != null && buf.limit() == size) { buf.rewind(); return buf; } buf = createByteBufferOnHeap(size); return buf; } }