Class ReadWriteLockedOffHeapClockCache<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>
org.terracotta.offheapstore.ReadWriteLockedOffHeapClockCache<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:
EvictionListeningReadWriteLockedOffHeapClockCache
A concurrent-read, exclusive-write off-heap clock cache.
This cache uses one of the unused bits in the off-heap entry's status value to store the clock data. This clock data is racily to updated during read operations. Since clock eviction data resides in the hash-map's table, it is correctly copied across during table resize operations.
The cache uses a regular ReentrantReadWriteLock to provide read/write
exclusion/sharing properties.
-
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
FieldsFields 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
ConstructorsConstructorDescriptionReadWriteLockedOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K, ? super V> storageEngine) ReadWriteLockedOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K, ? super V> storageEngine, int tableSize) ReadWriteLockedOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine) ReadWriteLockedOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine, int tableSize) -
Method Summary
Methods inherited from class AbstractOffHeapClockCache
evict, evictable, getAndPin, getEvictionIndex, hit, isPinned, putPinned, setPinning, storageEngineFailure, tableExpansionFailureMethods inherited from class AbstractLockedOffHeapHashMap
clear, computeIfAbsentWithMetadata, computeIfPresentWithMetadata, computeWithMetadata, containsKey, createEntrySet, createKeySet, destroy, fill, fill, get, getAndSetMetadata, getEncodingForHashAndBinary, getMetadata, getValueAndSetMetadata, installMappingForHashAndEncoding, put, put, putIfAbsent, remove, remove, removeAllWithHash, removeMapping, removeNoReturn, replace, replace, shrink, sizeMethods 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 Segment
computeIfAbsentWithMetadata, computeIfPresentWithMetadata, computeWithMetadata, destroy, fill, fill, getAndSetMetadata, getMetadata, getValueAndSetMetadata, put, removeNoReturn, shrink
-
Field Details
-
lock
-
-
Constructor Details
-
ReadWriteLockedOffHeapClockCache
public ReadWriteLockedOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine) -
ReadWriteLockedOffHeapClockCache
public ReadWriteLockedOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K, ? super V> storageEngine) -
ReadWriteLockedOffHeapClockCache
public ReadWriteLockedOffHeapClockCache(PageSource source, StorageEngine<? super K, ? super V> storageEngine, int tableSize) -
ReadWriteLockedOffHeapClockCache
public ReadWriteLockedOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K, ? super V> storageEngine, int tableSize)
-
-
Method Details
-
readLock
- Specified by:
readLockin interfaceReadWriteLock- Specified by:
readLockin classAbstractLockedOffHeapHashMap<K,V>
-
writeLock
- Specified by:
writeLockin interfaceReadWriteLock- Specified by:
writeLockin classAbstractLockedOffHeapHashMap<K,V>
-
getLock
Description copied from interface:SegmentReturn theReentrantReadWriteLockused by this segment.- Returns:
- RRWL for this segment
-