Package org.apache.openjpa.util
Class CacheMap
- java.lang.Object
-
- org.apache.openjpa.util.CacheMap
-
-
Constructor Summary
Constructors Constructor Description CacheMap()
Create a non-LRU (and therefore highly concurrent) cache map with a size of 1000.CacheMap(boolean lru)
Create a cache map with a size of 1000.CacheMap(boolean lru, int max)
Create a cache map with the given properties.CacheMap(boolean lru, int max, int size, float load)
Deprecated.useCacheMap(boolean, int, int, float, int)
instead.CacheMap(boolean lru, int max, int size, float load, int concurrencyLevel)
Create a cache map with the given properties.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
cacheMapOverflowRemoved(Object key, Object value)
Called fromSizedMap.overflowRemoved(java.lang.Object, java.lang.Object)
in the cache map.void
clear()
Removes pinned objects as well as unpinned ones.boolean
containsKey(Object key)
boolean
containsValue(Object val)
protected void
entryAdded(Object key, Object value)
Invoked when an entry is added to the cache.protected void
entryRemoved(Object key, Object value, boolean expired)
Invoked when a key-value pair is evicted from this data structure.Set
entrySet()
Object
get(Object key)
int
getCacheSize()
The maximum number of hard references to maintain, or -1 for no limit.Set
getPinnedKeys()
The keys pinned into the map.int
getSoftReferenceSize()
The maximum number of soft references to maintain, or -1 for no limit.boolean
isEmpty()
boolean
isLRU()
Whether this cache map uses LRU eviction.Set
keySet()
boolean
pin(Object key)
Locks the given key and its value into the map.Object
put(Object key, Object value)
protected Object
put(Map map, Object key, Object value)
Put the given entry into the given map.void
putAll(Map map)
void
putAll(Map map, boolean replaceExisting)
void
readLock()
Acquire read lock.void
readUnlock()
Release read lock.Object
remove(Object key)
Ifkey
is pinned into the cache, the pin is cleared and the object is removed.protected Object
remove(Map map, Object key)
Remove the given key from the given map.void
setCacheSize(int size)
The maximum number of hard references to maintain, or -1 for no limit.void
setSoftReferenceSize(int size)
The maximum number of soft references to maintain, or -1 for no limit.int
size()
protected void
softMapOverflowRemoved(Object key, Object value)
Called fromSizedMap.overflowRemoved(java.lang.Object, java.lang.Object)
in the soft map.protected void
softMapValueExpired(Object key)
Called when a value expires from the soft map.String
toString()
boolean
unpin(Object key)
Undo a pinning.Collection
values()
void
writeLock()
Acquire write lock.void
writeUnlock()
Release write lock.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Constructor Detail
-
CacheMap
public CacheMap()
Create a non-LRU (and therefore highly concurrent) cache map with a size of 1000.
-
CacheMap
public CacheMap(boolean lru)
Create a cache map with a size of 1000.- Parameters:
lru
- if true, create a LRU cache map otherwise a non-LRU map will be created.
-
CacheMap
public CacheMap(boolean lru, int max)
Create a cache map with the given properties.
-
CacheMap
@Deprecated public CacheMap(boolean lru, int max, int size, float load)
Deprecated.useCacheMap(boolean, int, int, float, int)
instead.
-
CacheMap
public CacheMap(boolean lru, int max, int size, float load, int concurrencyLevel)
Create a cache map with the given properties.- Since:
- 1.1.0
-
-
Method Detail
-
cacheMapOverflowRemoved
protected void cacheMapOverflowRemoved(Object key, Object value)
Called fromSizedMap.overflowRemoved(java.lang.Object, java.lang.Object)
in the cache map.
-
softMapOverflowRemoved
protected void softMapOverflowRemoved(Object key, Object value)
Called fromSizedMap.overflowRemoved(java.lang.Object, java.lang.Object)
in the soft map.
-
softMapValueExpired
protected void softMapValueExpired(Object key)
Called when a value expires from the soft map.
-
put
protected Object put(Map map, Object key, Object value)
Put the given entry into the given map. Allows subclasses to take additional actions.
-
remove
protected Object remove(Map map, Object key)
Remove the given key from the given map. Allows subclasses to take additional actions.
-
readLock
public void readLock()
Acquire read lock.
-
readUnlock
public void readUnlock()
Release read lock.
-
writeLock
public void writeLock()
Acquire write lock.
-
writeUnlock
public void writeUnlock()
Release write lock.
-
isLRU
public boolean isLRU()
Whether this cache map uses LRU eviction.
-
setCacheSize
public void setCacheSize(int size)
The maximum number of hard references to maintain, or -1 for no limit.
-
getCacheSize
public int getCacheSize()
The maximum number of hard references to maintain, or -1 for no limit.
-
setSoftReferenceSize
public void setSoftReferenceSize(int size)
The maximum number of soft references to maintain, or -1 for no limit.
-
getSoftReferenceSize
public int getSoftReferenceSize()
The maximum number of soft references to maintain, or -1 for no limit.
-
getPinnedKeys
public Set getPinnedKeys()
The keys pinned into the map.
-
pin
public boolean pin(Object key)
Locks the given key and its value into the map. Objects pinned into the map are not counted towards the maximum cache size, and are never evicted implicitly. You may pin keys for which no value is in the map.- Returns:
- true if the givne key's value was pinned; false if no value for the given key is cached
-
unpin
public boolean unpin(Object key)
Undo a pinning.
-
entryRemoved
protected void entryRemoved(Object key, Object value, boolean expired)
Invoked when a key-value pair is evicted from this data structure. This is invoked withexpired
set totrue
when an object is dropped because of space requirements or through garbage collection of soft references. It is invoked withexpired
set tofalse
when an object is explicitly removed via theremove(java.util.Map, java.lang.Object)
orclear()
methods. This may be invoked more than once for a given entry.- Parameters:
value
- may be null if the value was a soft reference that has been GCd- Since:
- 0.2.5.0
-
entryAdded
protected void entryAdded(Object key, Object value)
Invoked when an entry is added to the cache. This may be invoked more than once for an entry.
-
putAll
public void putAll(Map map, boolean replaceExisting)
-
remove
public Object remove(Object key)
Ifkey
is pinned into the cache, the pin is cleared and the object is removed.
-
clear
public void clear()
Removes pinned objects as well as unpinned ones.
-
containsKey
public boolean containsKey(Object key)
- Specified by:
containsKey
in interfaceMap
-
containsValue
public boolean containsValue(Object val)
- Specified by:
containsValue
in interfaceMap
-
values
public Collection values()
-
-