Package com.sun.appserv.util.cache
Class LruCache
- java.lang.Object
-
- com.sun.appserv.util.cache.BaseCache
-
- com.sun.appserv.util.cache.LruCache
-
- All Implemented Interfaces:
Cache
- Direct Known Subclasses:
LruEJBCache
public class LruCache extends BaseCache
LRUCache in-memory bounded cache with an LRU list
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
LruCache.LruCacheItem
default CacheItem class implementation-
Nested classes/interfaces inherited from class com.sun.appserv.util.cache.BaseCache
BaseCache.CacheItem
-
-
Field Summary
Fields Modifier and Type Field Description protected int
defaultMaxEntries
protected LruCache.LruCacheItem
head
protected boolean
isUnbounded
protected int
listSize
static long
NO_TIMEOUT
protected LruCache.LruCacheItem
tail
protected long
timeout
protected int
trimCount
-
Fields inherited from class com.sun.appserv.util.cache.BaseCache
bucketLocks, buckets, entryCount, hitCount, listeners, maxBuckets, maxEntries, missCount, refreshFlags, removalCount, threshold
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected BaseCache.CacheItem
createItem(int hashCode, Object key, Object value, int size)
create new itemObject
getStatByName(String key)
get the desired statistic counterMap
getStats()
get the stats snapshotvoid
init(int maxEntries, long timeout, float loadFactor, Properties props)
initialize the cacheprotected void
itemAccessed(BaseCache.CacheItem item)
this item is accessedprotected BaseCache.CacheItem
itemAdded(BaseCache.CacheItem item)
/** this item is just added to the cacheprotected void
itemRefreshed(BaseCache.CacheItem item, int oldSize)
item value has been refreshedprotected void
itemRemoved(BaseCache.CacheItem item)
item value has been removed from the cachevoid
setTimeout(long timeout)
sets the timeout valuevoid
trimExpiredEntries(int maxCount)
trim the expired entries from the cache.protected BaseCache.CacheItem
trimLru(long currentTime)
trim one item from the LRU list-
Methods inherited from class com.sun.appserv.util.cache.BaseCache
_put, _remove, _removeItem, add, add, addCacheListener, clear, clearStats, contains, decrementEntryCount, destroy, elements, eq, get, get, getAll, getEntryCount, getIndex, getIndex, handleOverflow, hash, incrementAddCount, incrementEntryCount, incrementHitCount, incrementMissCount, incrementOverflowCount, incrementRefreshCount, incrementRemovalCount, init, init, isEmpty, isThresholdReached, keys, loadValue, notifyRefresh, put, put, remove, remove, remove, removeAll, trimItem, values, waitRefresh
-
-
-
-
Field Detail
-
NO_TIMEOUT
public static final long NO_TIMEOUT
- See Also:
- Constant Field Values
-
head
protected LruCache.LruCacheItem head
-
tail
protected LruCache.LruCacheItem tail
-
trimCount
protected int trimCount
-
listSize
protected int listSize
-
timeout
protected long timeout
-
defaultMaxEntries
protected int defaultMaxEntries
-
isUnbounded
protected boolean isUnbounded
-
-
Method Detail
-
init
public void init(int maxEntries, long timeout, float loadFactor, Properties props)
initialize the cache- Parameters:
maxEntries
- maximum number of entries expected in the cacheloadFactor
- the load factortimeout
- to be used to trim the expired entriesprops
- opaque list of properties for a given cache implementation- Throws:
a
- generic Exception if the initialization failed
-
setTimeout
public void setTimeout(long timeout)
sets the timeout value- Parameters:
timeout
- to be used to trim the expired entries
-
createItem
protected BaseCache.CacheItem createItem(int hashCode, Object key, Object value, int size)
create new item- Overrides:
createItem
in classBaseCache
- Parameters:
hashCode
- for the entrykey
-Object
keyvalue
-Object
valuesize
- size in bytes of the item subclasses may override to provide their own CacheItem extensions e.g. one that permits persistence.
-
trimLru
protected BaseCache.CacheItem trimLru(long currentTime)
trim one item from the LRU list- Parameters:
currentTime
- of this operation- Returns:
- the item trimmed from cache list synchronization is handled by the caller
-
itemAdded
protected BaseCache.CacheItem itemAdded(BaseCache.CacheItem item)
/** this item is just added to the cache
-
itemAccessed
protected void itemAccessed(BaseCache.CacheItem item)
this item is accessed- Overrides:
itemAccessed
in classBaseCache
- Parameters:
item
-CacheItem
accessed Cache bucket is already synchronized by the caller
-
itemRefreshed
protected void itemRefreshed(BaseCache.CacheItem item, int oldSize)
item value has been refreshed- Overrides:
itemRefreshed
in classBaseCache
- Parameters:
item
-CacheItem
that was refreshedoldSize
- size of the previous value that was refreshed Cache bucket is already synchronized by the caller
-
itemRemoved
protected void itemRemoved(BaseCache.CacheItem item)
item value has been removed from the cache- Overrides:
itemRemoved
in classBaseCache
- Parameters:
item
-CacheItem
that was just removed Cache bucket is already synchronized by the caller
-
trimExpiredEntries
public void trimExpiredEntries(int maxCount)
trim the expired entries from the cache.- Specified by:
trimExpiredEntries
in interfaceCache
- Overrides:
trimExpiredEntries
in classBaseCache
- Parameters:
maxCount
- maximum number of invalid entries to trim specify Integer.MAX_VALUE to trim all invalid entries This call is to be scheduled by a thread managed by the container. NOTE: this algorithm assumes that all the entries in the cache have identical timeout (otherwise traversing from tail won't be right).
-
getStatByName
public Object getStatByName(String key)
get the desired statistic counter- Specified by:
getStatByName
in interfaceCache
- Overrides:
getStatByName
in classBaseCache
- Parameters:
key
- to corresponding stat- Returns:
- an Object corresponding to the stat See also: Constant.java for the key
-
-