| java.lang.Object org.jivesoftware.util.cache.DefaultCache
DefaultCache | public class DefaultCache implements Cache<K, V>(Code) | | Default, non-distributed implementation of the Cache interface.
The algorithm for cache is as follows: a HashMap is maintained for fast
object lookup. Two linked lists are maintained: one keeps objects in the
order they are accessed from cache, the other keeps objects in the order
they were originally added to cache. When objects are added to cache, they
are first wrapped by a CacheObject which maintains the following pieces
of information:
- The size of the object (in bytes).
- A pointer to the node in the linked list that maintains accessed
order for the object. Keeping a reference to the node lets us avoid
linear scans of the linked list.
- A pointer to the node in the linked list that maintains the age
of the object in cache. Keeping a reference to the node lets us avoid
linear scans of the linked list.
To get an object from cache, a hash lookup is performed to get a reference
to the CacheObject that wraps the real object we are looking for.
The object is subsequently moved to the front of the accessed linked list
and any necessary cache cleanups are performed. Cache deletion and expiration
is performed as needed.
author: Matt Tucker |
Constructor Summary | |
public | DefaultCache(String name, long maxSize, long maxLifetime) Create a new default cache and specify the maximum size of for the cache in
bytes, and the maximum lifetime of objects.
Parameters: name - a name for the cache. Parameters: maxSize - the maximum size of the cache in bytes. |
cacheHitscacheMisses | protected long cacheHitscacheMisses(Code) | | Maintain the number of cache hits and misses. A cache hit occurs every
time the get method is called and the cache contains the requested
object. A cache miss represents the opposite occurence.
Keeping track of cache hits and misses lets one measure how efficient
the cache is; the higher the percentage of hits, the more efficient.
|
maxLifetime | protected long maxLifetime(Code) | | Maximum length of time objects can exist in cache before expiring.
|
DefaultCache | public DefaultCache(String name, long maxSize, long maxLifetime)(Code) | | Create a new default cache and specify the maximum size of for the cache in
bytes, and the maximum lifetime of objects.
Parameters: name - a name for the cache. Parameters: maxSize - the maximum size of the cache in bytes. -1 means the cachehas no max size. Parameters: maxLifetime - the maximum amount of time objects can exist incache before being deleted. -1 means objects never expire. |
clear | public synchronized void clear()(Code) | | |
containsValue | public boolean containsValue(Object value)(Code) | | |
cullCache | final protected void cullCache()(Code) | | Removes objects from cache if the cache is too full. "Too full" is
defined as within 3% of the maximum cache size. Whenever the cache is
is too big, the least frequently used elements are deleted until the
cache is at least 10% empty.
|
deleteExpiredEntries | protected void deleteExpiredEntries()(Code) | | Clears all entries out of cache where the entries are older than the
maximum defined age.
|
entrySet | public Set<Entry<K, V>> entrySet()(Code) | | |
getCacheHits | public long getCacheHits()(Code) | | Returns the number of cache hits. A cache hit occurs every
time the get method is called and the cache contains the requested
object.
Keeping track of cache hits and misses lets one measure how efficient
the cache is; the higher the percentage of hits, the more efficient.
the number of cache hits. |
getCacheMisses | public long getCacheMisses()(Code) | | Returns the number of cache misses. A cache miss occurs every
time the get method is called and the cache does not contain the
requested object.
Keeping track of cache hits and misses lets one measure how efficient
the cache is; the higher the percentage of hits, the more efficient.
the number of cache hits. |
getCacheSize | public int getCacheSize()(Code) | | Returns the size of the cache contents in bytes. This value is only a
rough approximation, so cache users should expect that actual VM
memory used by the cache could be significantly higher than the value
reported by this method.
the size of the cache contents in bytes. |
getMaxCacheSize | public long getMaxCacheSize()(Code) | | Returns the maximum size of the cache (in bytes). If the cache grows larger
than the max size, the least frequently used items will be removed. If
the max cache size is set to -1, there is no size limit.
the maximum size of the cache (-1 indicates unlimited max size). |
getMaxLifetime | public long getMaxLifetime()(Code) | | Returns the maximum number of milleseconds that any object can live
in cache. Once the specified number of milleseconds passes, the object
will be automatically expried from cache. If the max lifetime is set
to -1, then objects never expire.
the maximum number of milleseconds before objects are expired. |
getName | public String getName()(Code) | | Returns the name of this cache. The name is completely arbitrary
and used only for display to administrators.
the name of this cache. |
isEmpty | public boolean isEmpty()(Code) | | |
put | public synchronized V put(K key, V value)(Code) | | |
putAll | public void putAll(Map<? extends K, ? extends V> map)(Code) | | |
setMaxCacheSize | public void setMaxCacheSize(int maxCacheSize)(Code) | | Sets the maximum size of the cache. If the cache grows larger
than the max size, the least frequently used items will be removed. If
the max cache size is set to -1, there is no size limit.
Parameters: maxCacheSize - the maximum size of this cache (-1 indicates unlimited max size). |
setMaxLifetime | public void setMaxLifetime(long maxLifetime)(Code) | | Sets the maximum number of milleseconds that any object can live
in cache. Once the specified number of milleseconds passes, the object
will be automatically expried from cache. If the max lifetime is set
to -1, then objects never expire.
Parameters: maxLifetime - the maximum number of milleseconds before objects are expired. |
setName | public void setName(String name)(Code) | | Sets the name of this cache.
Parameters: name - the name of this cache. |
|
|