org.hibernate.util
Class SoftLimitMRUCache

java.lang.Object
  extended by org.hibernate.util.SoftLimitMRUCache
All Implemented Interfaces:
Serializable

public class SoftLimitMRUCache
extends Object
implements Serializable

Cache following a "Most Recently Used" (MRY) algorithm for maintaining a bounded in-memory size; the "Least Recently Used" (LRU) entry is the first available for removal from the cache.

This implementation uses a "soft limit" to the in-memory size of the cache, meaning that all cache entries are kept within a completely SoftReference-based map with the most recently utilized entries additionally kept in a hard-reference manner to prevent those cache entries soft references from becoming enqueued by the garbage collector. Thus the actual size of this cache impl can actually grow beyond the stated max size bound as long as GC is not actively seeking soft references for enqueuement.

Author:
Steve Ebersole
See Also:
Serialized Form

Field Summary
static int DEFAULT_STRONG_REF_COUNT
           
 
Constructor Summary
SoftLimitMRUCache()
           
SoftLimitMRUCache(int strongRefCount)
           
 
Method Summary
 void clear()
           
 Object get(Object key)
           
 Object put(Object key, Object value)
           
 int size()
           
 int softSize()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_STRONG_REF_COUNT

public static final int DEFAULT_STRONG_REF_COUNT
See Also:
Constant Field Values
Constructor Detail

SoftLimitMRUCache

public SoftLimitMRUCache()

SoftLimitMRUCache

public SoftLimitMRUCache(int strongRefCount)
Method Detail

get

public Object get(Object key)

put

public Object put(Object key,
                  Object value)

size

public int size()

softSize

public int softSize()

clear

public void clear()