All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hazelcast.internal.memory.GlobalMemoryAccessor Maven / Gradle / Ivy

There is a newer version: 5.5.0
Show newest version
/*
 * Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.
 *
 * 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.
 */

package com.hazelcast.internal.memory;

/**
 * Accessor of global memory, both in CPU's native address space and on the Java heap.
 * Since this is a global, singleton resource, there should be a global singleton instance
 * of each applicable implementation of this interface.
 * 

* The instance of {@code GlobalMemoryAccessor} appropriate to the platform and intended usage * can be retrieved from the {@link GlobalMemoryAccessorRegistry} by supplying the desired * {@link GlobalMemoryAccessorType}, or by directly using the constants * {@link GlobalMemoryAccessorRegistry#MEM} and {@link GlobalMemoryAccessorRegistry#MEM}. *

* This interface also works as a {@code ByteAccessStrategy} with the semantics matching the * semantics of {@code Unsafe}: when an object is supplied as the "resource", access is relative to * that object's base address; when {@code null} is supplied, a base address of zero is implied, i.e., * the supplied "offset" is treated as the absolute address in CPU's native address space. * * @see ByteAccessStrategy * @see GlobalMemoryAccessorType * @see GlobalMemoryAccessorRegistry */ @SuppressWarnings("checkstyle:interfaceistype") public interface GlobalMemoryAccessor extends ConcurrentMemoryAccessor, ConcurrentHeapMemoryAccessor, ByteAccessStrategy { /** * Maximum size of a block of memory to copy in a single low-level memory-copying * operation. The goal is to prevent large periods without a GC safepoint. */ int MEM_COPY_THRESHOLD = 1024 * 1024; }