Class LruEvictionPolicy<K,V>
- java.lang.Object
-
- org.apache.ignite.cache.eviction.AbstractEvictionPolicy<K,V>
-
- org.apache.ignite.cache.eviction.lru.LruEvictionPolicy<K,V>
-
- All Implemented Interfaces:
Externalizable,Serializable,EvictionPolicy<K,V>,IgniteMBeanAware
public class LruEvictionPolicy<K,V> extends AbstractEvictionPolicy<K,V> implements IgniteMBeanAware
Eviction policy based onLeast Recently Used (LRU)algorithm and supports batch eviction.The eviction starts in the following cases:
- The cache size becomes
batchSizeelements greater than the maximum size. - The size of cache entries in bytes becomes greater than the maximum memory size. The size of cache entry calculates as sum of key size and value size.
maxMemSize == 0).batchSizeelements will be evicted in this case. The defaultbatchSizevalue is1. This implementation is very efficient since it is lock-free and does not create any additional table-like data structures. TheLRUordering information is maintained by attaching ordering metadata to cache entries.- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.apache.ignite.cache.eviction.AbstractEvictionPolicy
memSize
-
-
Constructor Summary
Constructors Constructor Description LruEvictionPolicy()Constructs LRU eviction policy with all defaults.LruEvictionPolicy(int max)Constructs LRU eviction policy with maximum size.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intgetCurrentSize()ObjectgetMBean()Collection<EvictableEntry<K,V>>queue()Gets read-only view on internalFIFOqueue in proper order.protected booleanremoveMeta(Object meta)LruEvictionPolicy<K,V>setBatchSize(int batchSize)Sets batch size.LruEvictionPolicy<K,V>setMaxMemorySize(long maxMemSize)Sets maximum allowed cache size in bytes.LruEvictionPolicy<K,V>setMaxSize(int max)Sets maximum allowed size of cache before entry will start getting evicted.protected intshrink0()Tries to remove one item from queue.StringtoString()protected booleantouch(EvictableEntry<K,V> entry)-
Methods inherited from class org.apache.ignite.cache.eviction.AbstractEvictionPolicy
getBatchSize, getCurrentMemorySize, getMaxMemorySize, getMaxSize, onEntryAccessed, readExternal, shrink, writeExternal
-
-
-
-
Constructor Detail
-
LruEvictionPolicy
public LruEvictionPolicy()
Constructs LRU eviction policy with all defaults.
-
LruEvictionPolicy
public LruEvictionPolicy(int max)
Constructs LRU eviction policy with maximum size.- Parameters:
max- Maximum allowed size of cache before entry will start getting evicted.
-
-
Method Detail
-
getCurrentSize
public int getCurrentSize()
- Specified by:
getCurrentSizein classAbstractEvictionPolicy<K,V>- Returns:
- Size of the container with trackable entries.
-
setMaxMemorySize
public LruEvictionPolicy<K,V> setMaxMemorySize(long maxMemSize)
Sets maximum allowed cache size in bytes.- Overrides:
setMaxMemorySizein classAbstractEvictionPolicy<K,V>- Parameters:
maxMemSize- Maximum allowed cache size in bytes.- Returns:
thisfor chaining.
-
setMaxSize
public LruEvictionPolicy<K,V> setMaxSize(int max)
Sets maximum allowed size of cache before entry will start getting evicted.- Overrides:
setMaxSizein classAbstractEvictionPolicy<K,V>- Parameters:
max- Maximum allowed size of cache before entry will start getting evicted.- Returns:
thisfor chaining.
-
setBatchSize
public LruEvictionPolicy<K,V> setBatchSize(int batchSize)
Sets batch size.- Overrides:
setBatchSizein classAbstractEvictionPolicy<K,V>- Parameters:
batchSize- Batch size.- Returns:
thisfor chaining.
-
queue
public Collection<EvictableEntry<K,V>> queue()
Gets read-only view on internalFIFOqueue in proper order.- Returns:
- Read-only view ono internal
'FIFO'queue.
-
removeMeta
protected boolean removeMeta(Object meta)
- Specified by:
removeMetain classAbstractEvictionPolicy<K,V>- Parameters:
meta- Meta-information shipped to an entry.- Returns:
Trueif meta was successfully removed from the container.
-
touch
protected boolean touch(EvictableEntry<K,V> entry)
- Specified by:
touchin classAbstractEvictionPolicy<K,V>- Parameters:
entry- Entry to touch.- Returns:
Trueif new node has been added to queue by this call.
-
shrink0
protected int shrink0()
Tries to remove one item from queue.- Specified by:
shrink0in classAbstractEvictionPolicy<K,V>- Returns:
- number of bytes that was free.
-1if queue is empty.
-
getMBean
public Object getMBean()
- Specified by:
getMBeanin interfaceIgniteMBeanAware- Returns:
- MBean for this object.
-
-