Package org.apache.openjpa.util
Class CacheMap
java.lang.Object
org.apache.openjpa.util.CacheMap
- All Implemented Interfaces:
Map
Fixed-size map that has ability to pin/unpin entries and move overflow to
a backing soft map.
- Author:
- Patrick Linskey, Abe White
-
Nested Class Summary
-
Field Summary
-
Constructor Summary
ConstructorDescriptionCacheMap()
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.CacheMap
(boolean lru, int max, int size, float load, int concurrencyLevel) Create a cache map with the given properties. -
Method Summary
Modifier and TypeMethodDescriptionprotected 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.entrySet()
int
The maximum number of hard references to maintain, or -1 for no limit.The keys pinned into the map.int
The maximum number of soft references to maintain, or -1 for no limit.boolean
isEmpty()
boolean
isLRU()
Whether this cache map uses LRU eviction.keySet()
boolean
Locks the given key and its value into the map.protected Object
Put the given entry into the given map.void
void
void
readLock()
Acquire read lock.void
Release read lock.Ifkey
is pinned into the cache, the pin is cleared and the object is removed.protected Object
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
Called when a value expires from the soft map.toString()
boolean
Undo a pinning.values()
void
Acquire write lock.void
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
-
Field Details
-
cacheMap
The map for non-expired and non-pinned references. -
softMap
The map for expired references. -
pinnedMap
The set of objects pinned into the cache.
-
-
Constructor Details
-
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.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 Details
-
cacheMapOverflowRemoved
Called fromSizedMap.overflowRemoved(java.lang.Object, java.lang.Object)
in the cache map. -
softMapOverflowRemoved
Called fromSizedMap.overflowRemoved(java.lang.Object, java.lang.Object)
in the soft map. -
softMapValueExpired
Called when a value expires from the soft map. -
put
Put the given entry into the given map. Allows subclasses to take additional actions. -
remove
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
The keys pinned into the map. -
pin
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
Undo a pinning. -
entryRemoved
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
Invoked when an entry is added to the cache. This may be invoked more than once for an entry. -
get
-
put
-
putAll
-
putAll
-
remove
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. -
size
public int size() -
isEmpty
public boolean isEmpty() -
containsKey
- Specified by:
containsKey
in interfaceMap
-
containsValue
- Specified by:
containsValue
in interfaceMap
-
keySet
-
values
-
entrySet
-
toString
-
CacheMap(boolean, int, int, float, int)
instead.