Class LRUMap<K,V>
- java.lang.Object
-
- com.fasterxml.jackson.databind.util.LRUMap<K,V>
-
- All Implemented Interfaces:
LookupCache<K,V>,java.io.Serializable
public class LRUMap<K,V> extends java.lang.Object implements LookupCache<K,V>, java.io.Serializable
Helper for simple bounded maps used for reusing lookup values.Note that serialization behavior is such that contents are NOT serialized, on assumption that all use cases are for caching where persistence does not make sense. The only thing serialized is the cache size of Map.
NOTE: since version 2.4.2, this is NOT an LRU-based at all; reason being that it is not possible to use JDK components that do LRU _AND_ perform well wrt synchronization on multi-core systems. So we choose efficient synchronization over potentially more efficient handling of entries.
And yes, there are efficient LRU implementations such as concurrentlinkedhashmap; but at this point we really try to keep external deps to minimum. Plan from Jackson 2.12 is to focus more on pluggability as
LookupCacheand let users, frameworks, provide their own cache implementations.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description LRUMap(int initialEntries, int maxEntries)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Method for removing all contents this cache has.Vget(java.lang.Object key)NOTE: key is of type Object only to retain binary backwards-compatibilityVput(K key, V value)VputIfAbsent(K key, V value)intsize()
-
-
-
Method Detail
-
putIfAbsent
public V putIfAbsent(K key, V value)
- Specified by:
putIfAbsentin interfaceLookupCache<K,V>- Since:
- 2.5
-
get
public V get(java.lang.Object key)
Description copied from interface:LookupCacheNOTE: key is of type Object only to retain binary backwards-compatibility- Specified by:
getin interfaceLookupCache<K,V>- Returns:
- value associated with key (can return null)
-
clear
public void clear()
Description copied from interface:LookupCacheMethod for removing all contents this cache has.- Specified by:
clearin interfaceLookupCache<K,V>
-
size
public int size()
- Specified by:
sizein interfaceLookupCache<K,V>- Returns:
- Number of entries currently in cache: may be approximate, only to be used for diagnostics, metrics reporting
-
-