org.apache.solr.util
Class ConcurrentLRUCache<K,V>
java.lang.Object
org.apache.solr.util.ConcurrentLRUCache<K,V>
public class ConcurrentLRUCache<K,V>
- extends Object
A LRU cache implementation based upon ConcurrentHashMap and other techniques to reduce
contention and synchronization overhead to utilize multiple CPU cores more effectively.
Note that the implementation does not follow a true LRU (least-recently-used) eviction
strategy. Instead it strives to remove least recently used items but when the initial
cleanup does not remove enough items to reach the 'acceptableWaterMark' limit, it can
remove more items forcefully regardless of access order.
- Since:
- solr 1.4
ConcurrentLRUCache
public ConcurrentLRUCache(int upperWaterMark,
int lowerWaterMark,
int acceptableWatermark,
int initialSize,
boolean runCleanupThread,
boolean runNewThreadForCleanup,
ConcurrentLRUCache.EvictionListener<K,V> evictionListener)
ConcurrentLRUCache
public ConcurrentLRUCache(int size,
int lowerWatermark)
setAlive
public void setAlive(boolean live)
get
public V get(K key)
remove
public V remove(K key)
put
public V put(K key,
V val)
getOldestAccessedItems
public Map<K,V> getOldestAccessedItems(int n)
- Returns 'n' number of oldest accessed entries present in this cache.
This uses a TreeSet to collect the 'n' oldest items ordered by ascending last access time
and returns a LinkedHashMap containing 'n' or less than 'n' entries.
- Parameters:
n
- the number of oldest items needed
- Returns:
- a LinkedHashMap containing 'n' or less than 'n' entries
getLatestAccessedItems
public Map<K,V> getLatestAccessedItems(int n)
size
public int size()
clear
public void clear()
getMap
public Map<Object,org.apache.solr.util.ConcurrentLRUCache.CacheEntry<K,V>> getMap()
destroy
public void destroy()
getStats
public ConcurrentLRUCache.Stats getStats()
finalize
protected void finalize()
throws Throwable
- Overrides:
finalize
in class Object
- Throws:
Throwable
Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.