Java tutorial
/** * Licensed to the Apache Software Foundation (ASF) 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. */ package org.apache.hadoop.hdfs.shortcircuit; import org.apache.hadoop.classification.InterfaceAudience; import java.io.Closeable; import java.nio.MappedByteBuffer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.google.common.annotations.VisibleForTesting; import org.apache.hadoop.io.nativeio.NativeIO; /** * A reference to a memory-mapped region used by an HDFS client. */ @InterfaceAudience.Private public class ClientMmap implements Closeable { static final Log LOG = LogFactory.getLog(ClientMmap.class); /** * A reference to the block replica which this mmap relates to. */ private ShortCircuitReplica replica; /** * The java ByteBuffer object. */ private final MappedByteBuffer map; /** * Whether or not this ClientMmap anchors the replica into memory while * it exists. Closing an anchored ClientMmap unanchors the replica. */ private final boolean anchored; ClientMmap(ShortCircuitReplica replica, MappedByteBuffer map, boolean anchored) { this.replica = replica; this.map = map; this.anchored = anchored; } /** * Close the ClientMmap object. */ @Override public void close() { if (replica != null) { if (anchored) { replica.removeNoChecksumAnchor(); } replica.unref(); } replica = null; } public MappedByteBuffer getMappedByteBuffer() { return map; } // public void setLastEvictableTimeNs(long lastEvictableTimeNs) { // this.lastEvictableTimeNs = lastEvictableTimeNs; // } // // public long getLastEvictableTimeNs() { // return this.lastEvictableTimeNs; // } // // /** // * Unmap the memory region. // */ // void unmap() { // assert(refCount.get() == 0); // NativeIO.POSIX.munmap(map); // } }