Class AbstractOffHeapClockCache<K,V>
java.lang.Object
java.util.AbstractMap<K,V>
org.terracotta.offheapstore.OffHeapHashMap<K,V>
org.terracotta.offheapstore.AbstractLockedOffHeapHashMap<K,V>
org.terracotta.offheapstore.AbstractOffHeapClockCache<K,V>
- Type Parameters:
K- the type of keys maintained by this mapV- the type of mapped values
- All Implemented Interfaces:
ConcurrentMap<K,V>, ReadWriteLock, Map<K, V>, HashingMap<K, V>, MapInternals, PinnableCache<K, V>, PinnableSegment<K, V>, Segment<K, V>, StorageEngine.Owner
- Direct Known Subclasses:
AbstractPersistentOffHeapCache, ReadWriteLockedOffHeapClockCache, WriteLockedOffHeapClockCache
public abstract class AbstractOffHeapClockCache<K,V>
extends AbstractLockedOffHeapHashMap<K,V>
implements PinnableCache<K,V>, PinnableSegment<K,V>
An abstract off-heap cache implementation.
Subclasses must implement the two getEvictionIndex(...) methods to
instruct the cache regarding which mappings to remove.
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractLockedOffHeapHashMap
AbstractLockedOffHeapHashMap.LockedEntryIterator, AbstractLockedOffHeapHashMap.LockedEntrySet, AbstractLockedOffHeapHashMap.LockedKeyIterator, AbstractLockedOffHeapHashMap.LockedKeySetNested classes/interfaces inherited from class OffHeapHashMap
OffHeapHashMap.DirectEntry, OffHeapHashMap.EncodingIterator, OffHeapHashMap.EncodingSet, OffHeapHashMap.EntryIterator, OffHeapHashMap.EntrySet, OffHeapHashMap.HashIterator<T>, OffHeapHashMap.KeyIterator, OffHeapHashMap.KeySet, OffHeapHashMap.PendingPageNested classes/interfaces inherited from class AbstractMap
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K, V> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate static final org.slf4j.Loggerprivate static final intprivate final RandomFields inherited from class OffHeapHashMap
ENCODING, ENTRY_BIT_SHIFT, ENTRY_SIZE, hashtable, hashTablePage, KEY_HASHCODE, modCount, removedSlots, reprobeLimit, RESERVED_STATUS_BITS, size, STATUS, STATUS_REMOVED, STATUS_USED, storageEngine, tableSource -
Constructor Summary
ConstructorsConstructorDescriptionAbstractOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K, ? super V> storageEngine) AbstractOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K, ? super V> storageEngine, int tableSize) AbstractOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine) AbstractOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine, boolean bootstrap) AbstractOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine, int tableSize) AbstractOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine, int tableSize, boolean bootstrap) -
Method Summary
Modifier and TypeMethodDescriptionbooleanevict(int index, boolean shrink) protected booleanevictable(int status) intReturn the table offset of the to be evicted mapping.private intgetEvictionIndex(int start, int length) Return the table offset of the to be evicted mapping within the given probe sequence.protected voidbooleanvoidsetPinning(K key, boolean pinned) protected voidstorageEngineFailure(Object failure) protected voidtableExpansionFailure(int start, int length) Methods inherited from class AbstractLockedOffHeapHashMap
clear, computeIfAbsentWithMetadata, computeIfPresentWithMetadata, computeWithMetadata, containsKey, createEntrySet, createKeySet, destroy, fill, fill, get, getAndSetMetadata, getEncodingForHashAndBinary, getMetadata, getValueAndSetMetadata, installMappingForHashAndEncoding, put, put, putIfAbsent, readLock, remove, remove, removeAllWithHash, removeMapping, removeNoReturn, replace, replace, shrink, size, writeLockMethods inherited from class OffHeapHashMap
added, createEncodingSet, encodingSet, entrySet, fill, freePendingTables, getAllocatedMemory, getAtTableOffset, getDataAllocatedMemory, getDataOccupiedMemory, getDataSize, getDataVitalMemory, getEntryAtTableOffset, getOccupiedMemory, getRemovedSlotCount, getReprobeLength, getSize, getSlotForHashAndEncoding, getStorageEngine, getTableCapacity, getUsedSlotCount, getVitalMemory, indexFor, indexFor, isAvailable, isPresent, isRemoved, isRemoved, isTerminating, isTerminating, isThiefForTableAllocations, keySet, readLong, readLong, removeAtTableOffset, removed, shrinkTable, spread, tryIncreaseReprobe, updated, updateEncodingMethods inherited from class AbstractMap
clone, containsValue, equals, hashCode, isEmpty, putAll, toString, valuesMethods inherited from interface ConcurrentMap
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAllMethods inherited from interface HashingMap
removeAllWithHashMethods inherited from interface Map
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, valuesMethods inherited from interface MapInternals
getAllocatedMemory, getDataAllocatedMemory, getDataOccupiedMemory, getDataSize, getDataVitalMemory, getOccupiedMemory, getRemovedSlotCount, getReprobeLength, getSize, getTableCapacity, getUsedSlotCount, getVitalMemoryMethods inherited from interface ReadWriteLock
readLock, writeLockMethods inherited from interface Segment
computeIfAbsentWithMetadata, computeIfPresentWithMetadata, computeWithMetadata, destroy, fill, fill, getAndSetMetadata, getLock, getMetadata, getValueAndSetMetadata, put, removeNoReturn, shrink
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
PRESENT_CLOCK
private static final int PRESENT_CLOCK- See Also:
-
rndm
-
clockHand
private int clockHand
-
-
Constructor Details
-
AbstractOffHeapClockCache
public AbstractOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine) -
AbstractOffHeapClockCache
public AbstractOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K, ? super V> storageEngine) -
AbstractOffHeapClockCache
public AbstractOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine, boolean bootstrap) -
AbstractOffHeapClockCache
public AbstractOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine, int tableSize) -
AbstractOffHeapClockCache
public AbstractOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K, ? super V> storageEngine, int tableSize) -
AbstractOffHeapClockCache
public AbstractOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine, int tableSize, boolean bootstrap)
-
-
Method Details
-
storageEngineFailure
- Overrides:
storageEngineFailurein classOffHeapHashMap<K,V>
-
tableExpansionFailure
protected void tableExpansionFailure(int start, int length) - Overrides:
tableExpansionFailurein classOffHeapHashMap<K,V>
-
hit
- Overrides:
hitin classOffHeapHashMap<K,V>
-
getEvictionIndex
public int getEvictionIndex()Return the table offset of the to be evicted mapping.The mapping to be evicted can occur anywhere in this cache's table.
- Returns:
- table offset of the mapping to be evicted
-
getEvictionIndex
private int getEvictionIndex(int start, int length) Return the table offset of the to be evicted mapping within the given probe sequence.The mapping to be evicted must occur within the given probe sequence.
- Parameters:
start- initial slot in probe sequencelength- number of slots in probe sequence- Returns:
- table offset of the mapping to be evicted
-
evictable
protected boolean evictable(int status) -
evict
public boolean evict(int index, boolean shrink) - Specified by:
evictin interfaceStorageEngine.Owner- Overrides:
evictin classAbstractLockedOffHeapHashMap<K,V>
-
isPinned
- Specified by:
isPinnedin interfacePinnableCache<K,V>
-
setPinning
- Specified by:
setPinningin interfacePinnableCache<K,V>
-
putPinned
-
getAndPin
-