org.apache.jcs.engine.memory.lru
Class LRUMemoryCache

java.lang.Object
  extended byorg.apache.jcs.engine.memory.AbstractMemoryCache
      extended byorg.apache.jcs.engine.memory.lru.LRUMemoryCache
All Implemented Interfaces:
MemoryCache, java.io.Serializable

public class LRUMemoryCache
extends AbstractMemoryCache

A fast reference management system. The least recently used items move to the end of the list and get spooled to disk if the cache hub is configured to use a disk cache. Most of the cache bottelnecks are in IO. There are no io bottlenecks here, it's all about processing power.

Even though there are only a few adjustments necessary to maintain the double linked list, we might want to find a more efficient memory manager for large cache regions.

The LRUMemoryCache is most efficient when the first element is selected. The smaller the region, the better the chance that this will be the case. < .04 ms per put, p3 866, 1/10 of that per get

Version:
$Id: LRUMemoryCache.java 378255 2006-02-16 14:39:24Z asmuts $
See Also:
Serialized Form

Nested Class Summary
 class LRUMemoryCache.IteratorWrapper
          iteration aid
 class LRUMemoryCache.MapEntryWrapper
           
 
Field Summary
 
Fields inherited from class org.apache.jcs.engine.memory.AbstractMemoryCache
attr, cache, cacheName, cattr, chunkSize, map, status
 
Constructor Summary
LRUMemoryCache()
           
 
Method Summary
protected  void addLast(CacheElement ce)
          Adds a new node to the end of the link list.
 void dumpCacheEntries()
          Dump the cache entries from first to list for debugging.
 void dumpMap()
          Dump the cache map for debugging.
 ICacheElement get(java.io.Serializable key)
          Get an item from the cache
 java.util.Iterator getIterator()
          Gets the iterator attribute of the LRUMemoryCache object
 java.lang.Object[] getKeyArray()
          Get an Array of the keys for all elements in the memory cache
 ICacheElement getQuiet(java.io.Serializable key)
          Get an item from the cache without affecting its last access time or position.
 IStats getStatistics()
          Returns the historical and statistical data for a region's memory cache.
 void initialize(CompositeCache hub)
          For post reflection creation initialization.
 boolean remove(java.io.Serializable key)
          Removes an item from the cache.
 void removeAll()
          Remove all of the elements from both the Map and the linked list implementation.
 void update(ICacheElement ce)
          Puts an item to the cache.
 
Methods inherited from class org.apache.jcs.engine.memory.AbstractMemoryCache
dispose, getCacheAttributes, getCacheName, getCompositeCache, getGroupKeys, getSize, getStatus, setCacheAttributes, waterfal
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LRUMemoryCache

public LRUMemoryCache()
Method Detail

initialize

public void initialize(CompositeCache hub)
For post reflection creation initialization.

Specified by:
initialize in interface MemoryCache
Overrides:
initialize in class AbstractMemoryCache
Parameters:
hub -

update

public void update(ICacheElement ce)
            throws java.io.IOException
Puts an item to the cache. Removes any pre-existing entries of the same key from the linked list and adds this one first.

If the max size is reached, an element will be put to disk.

Specified by:
update in interface MemoryCache
Specified by:
update in class AbstractMemoryCache
Parameters:
ce - The cache element, or entry wrapper
Throws:
java.io.IOException

getQuiet

public ICacheElement getQuiet(java.io.Serializable key)
                       throws java.io.IOException
Get an item from the cache without affecting its last access time or position.

Specified by:
getQuiet in interface MemoryCache
Specified by:
getQuiet in class AbstractMemoryCache
Parameters:
key - Identifies item to find
Returns:
Element mathinh key if found, or null
Throws:
java.io.IOException

get

public ICacheElement get(java.io.Serializable key)
                  throws java.io.IOException
Get an item from the cache

Specified by:
get in interface MemoryCache
Specified by:
get in class AbstractMemoryCache
Parameters:
key - Identifies item to find
Returns:
ICacheElement if found, else null
Throws:
java.io.IOException

remove

public boolean remove(java.io.Serializable key)
               throws java.io.IOException
Removes an item from the cache. This method handles hierarchical removal. If the key is a String and ends with the CacheConstants.NAME_COMPONENT_DELIMITER, then all items with keys starting with the argument String will be removed.

Specified by:
remove in interface MemoryCache
Specified by:
remove in class AbstractMemoryCache
Parameters:
key -
Returns:
Throws:
java.io.IOException

removeAll

public void removeAll()
               throws java.io.IOException
Remove all of the elements from both the Map and the linked list implementation. Overrides base class.

Specified by:
removeAll in interface MemoryCache
Overrides:
removeAll in class AbstractMemoryCache
Throws:
java.io.IOException

getIterator

public java.util.Iterator getIterator()
Gets the iterator attribute of the LRUMemoryCache object

Specified by:
getIterator in interface MemoryCache
Overrides:
getIterator in class AbstractMemoryCache
Returns:
The iterator value

getKeyArray

public java.lang.Object[] getKeyArray()
Get an Array of the keys for all elements in the memory cache

Specified by:
getKeyArray in interface MemoryCache
Specified by:
getKeyArray in class AbstractMemoryCache
Returns:
An Object[]

addLast

protected void addLast(CacheElement ce)
Adds a new node to the end of the link list. Currently not used.

Parameters:
ce - The feature to be added to the Last

dumpMap

public void dumpMap()
Dump the cache map for debugging.


dumpCacheEntries

public void dumpCacheEntries()
Dump the cache entries from first to list for debugging.


getStatistics

public IStats getStatistics()
Description copied from interface: MemoryCache
Returns the historical and statistical data for a region's memory cache.

Specified by:
getStatistics in interface MemoryCache
Overrides:
getStatistics in class AbstractMemoryCache


Copyright © 2002-2007 Apache Software Foundation. All Rights Reserved.