A cache that uses a near optional LRU Cache using
SoftReference
.
The Cache is implemented by Caffeine which provides an
efficient cache.
This implementation uses
SoftReference
for stored values in the cache, to support the JVM
when it wants to reclaim objects when it's running out of memory. Therefore this implementation does
not support
all the
Map
methods.
The following methods is
only be be used:
- containsKey - To determine if the key is in the cache and refers to a value
- entrySet - To return a set of all the entries (as key/value paris)
- get - To get a value from the cache
- isEmpty - To determine if the cache contains any values
- keySet - To return a set of the current keys which refers to a value
- put - To add a value to the cache
- putAll - To add values to the cache
- remove - To remove a value from the cache by its key
- size - To get the current size
- values - To return a copy of all the value in a list
The
LRUCache.containsValue(Object)
method should
not be used as it's not adjusted to check
for the existence of a value without catering for the soft references.
Notice that if the JVM reclaim memory the content of this cache may be garbage collected, without any
eviction notifications.