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
batchSize
elements 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
).batchSize
elements will be evicted in this case. The defaultbatchSize
value is1
. This implementation is very efficient since it is lock-free and does not create any additional table-like data structures. TheLRU
ordering 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 int
getCurrentSize()
Object
getMBean()
Collection<EvictableEntry<K,V>>
queue()
Gets read-only view on internalFIFO
queue in proper order.protected boolean
removeMeta(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 int
shrink0()
Tries to remove one item from queue.String
toString()
protected boolean
touch(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:
getCurrentSize
in 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:
setMaxMemorySize
in classAbstractEvictionPolicy<K,V>
- Parameters:
maxMemSize
- Maximum allowed cache size in bytes.- Returns:
this
for chaining.
-
setMaxSize
public LruEvictionPolicy<K,V> setMaxSize(int max)
Sets maximum allowed size of cache before entry will start getting evicted.- Overrides:
setMaxSize
in classAbstractEvictionPolicy<K,V>
- Parameters:
max
- Maximum allowed size of cache before entry will start getting evicted.- Returns:
this
for chaining.
-
setBatchSize
public LruEvictionPolicy<K,V> setBatchSize(int batchSize)
Sets batch size.- Overrides:
setBatchSize
in classAbstractEvictionPolicy<K,V>
- Parameters:
batchSize
- Batch size.- Returns:
this
for chaining.
-
queue
public Collection<EvictableEntry<K,V>> queue()
Gets read-only view on internalFIFO
queue in proper order.- Returns:
- Read-only view ono internal
'FIFO'
queue.
-
removeMeta
protected boolean removeMeta(Object meta)
- Specified by:
removeMeta
in classAbstractEvictionPolicy<K,V>
- Parameters:
meta
- Meta-information shipped to an entry.- Returns:
True
if meta was successfully removed from the container.
-
touch
protected boolean touch(EvictableEntry<K,V> entry)
- Specified by:
touch
in classAbstractEvictionPolicy<K,V>
- Parameters:
entry
- Entry to touch.- Returns:
True
if new node has been added to queue by this call.
-
shrink0
protected int shrink0()
Tries to remove one item from queue.- Specified by:
shrink0
in classAbstractEvictionPolicy<K,V>
- Returns:
- number of bytes that was free.
-1
if queue is empty.
-
getMBean
public Object getMBean()
- Specified by:
getMBean
in interfaceIgniteMBeanAware
- Returns:
- MBean for this object.
-
-