Java ByteBuffer Clean cleanDirectBuffer(ByteBuffer buffer)

Here you can find the source of cleanDirectBuffer(ByteBuffer buffer)

Description

Force to unmap direct buffer if the buffer is no longer used.

License

Apache License

Parameter

Parameter Description
buffer the byte buffer to be unmapped

Declaration

public static void cleanDirectBuffer(ByteBuffer buffer) 

Method Source Code

//package com.java2s;
/*//  w w  w  .ja  va  2 s .c  om
 * Licensed to the University of California, Berkeley under one or more contributor license
 * agreements. See the NOTICE file distributed with this work for additional information regarding
 * copyright ownership. The ASF licenses this file to You 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.
 */

import java.nio.ByteBuffer;

import sun.misc.Cleaner;
import sun.nio.ch.DirectBuffer;

public class Main {
    /**
     * Force to unmap direct buffer if the buffer is no longer used. It is unsafe operation and
     * currently a walk-around to avoid huge memory occupation caused by memory map.
     *
     * @param buffer the byte buffer to be unmapped
     */
    public static void cleanDirectBuffer(ByteBuffer buffer) {
        if (buffer == null) {
            return;
        }
        if (buffer.isDirect()) {
            Cleaner cleaner = ((DirectBuffer) buffer).cleaner();
            cleaner.clean();
        }
    }
}

Related

  1. callCleaner(ByteBuffer byteBuffer)
  2. cleanBuffer(final ByteBuffer bb)
  3. cleanMemBuff(MappedByteBuffer buffer)
  4. getCleanerMethod(final ByteBuffer buffer)