org.terracotta.offheapstore
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>, MapInternals, PinnableCache<K,V>, PinnableSegment<K,V>, Segment<K,V>, StorageEngine.Owner
- Direct Known Subclasses:
- EvictionListeningReadWriteLockedOffHeapClockCache
public class ReadWriteLockedOffHeapClockCache<K,V>
- extends AbstractOffHeapClockCache<K,V>
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.
- Author:
- Chris Dennis
| Nested classes/interfaces inherited from interface java.util.Map |
Map.Entry<K,V> |
| Fields inherited from class org.terracotta.offheapstore.OffHeapHashMap |
ENTRY_SIZE, hashtable, hashTablePage, modCount, removedSlots, reprobeLimit, RESERVED_STATUS_BITS, size, STATUS, STATUS_USED, storageEngine, tableSource |
|
Constructor Summary |
ReadWriteLockedOffHeapClockCache(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)
|
| Methods inherited from class org.terracotta.offheapstore.AbstractLockedOffHeapHashMap |
clear, containsKey, destroy, entrySet, fill, fill, get, getAndSetMetadata, getEncodingForHashAndBinary, installMappingForHashAndEncoding, keySet, put, put, putIfAbsent, remove, remove, removeMapping, removeNoReturn, replace, replace, setMetadata, shrink, size, values |
| Methods inherited from class org.terracotta.offheapstore.OffHeapHashMap |
added, encodingSet, fill, getAllocatedMemory, getAtTableOffset, getDataAllocatedMemory, getDataOccupiedMemory, getDataSize, getDataVitalMemory, getEntryAtTableOffset, getMetadata, getOccupiedMemory, getRemovedSlotCount, getReprobeLength, getSize, getSlotForHashAndEncoding, getStorageEngine, getTableCapacity, getUsedSlotCount, getVitalMemory, isAvailable, isPresent, isRemoved, isTerminating, isThiefForTableAllocations, removeAtTableOffset, removed, spread, tryIncreaseReprobe, updated, updateEncoding, updateMetadata |
| Methods inherited from interface org.terracotta.offheapstore.MapInternals |
getAllocatedMemory, getDataAllocatedMemory, getDataOccupiedMemory, getDataSize, getDataVitalMemory, getOccupiedMemory, getRemovedSlotCount, getReprobeLength, getSize, getTableCapacity, getUsedSlotCount, getVitalMemory |
| Methods inherited from interface java.util.Map |
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values |
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)
readLock
public Lock readLock()
- Specified by:
readLock in interface ReadWriteLock- Specified by:
readLock in class AbstractLockedOffHeapHashMap<K,V>
writeLock
public Lock writeLock()
- Specified by:
writeLock in interface ReadWriteLock- Specified by:
writeLock in class AbstractLockedOffHeapHashMap<K,V>
getLock
public ReentrantReadWriteLock getLock()
- Description copied from interface:
Segment
- Return the
ReentrantReadWriteLock used by this segment.
- Returns:
- RRWL for this segment
Copyright © 2015. All Rights Reserved.