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 efficeint 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,v 1.29 2005/06/04 02:01:59 asmuts Exp $
See Also:
Serialized Form

Nested Class Summary
 class LRUMemoryCache.IteratorWrapper
           
 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
 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.

Specified by:
update in interface MemoryCache
Specified by:
update in class AbstractMemoryCache
Parameters:
ce - Description of the Parameter
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[]

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-2005 Apache Software Foundation. All Rights Reserved.