Class WeakIdentityMap

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, IdentityMap
    Direct Known Subclasses:
    HardCacheWeakIdentityMap, SoftIdentityMap

    public class WeakIdentityMap
    extends FullIdentityMap

    Purpose: A WeakIdentityMap holds all objects referenced by the application only. The weak identity map is similar to the full identity map except for the fact that it allows full garbage collection.

    Responsibilities:

    • Guarantees identity.
    • Allows garbage collection.
    Since:
    TOPLink/Java 1.0
    See Also:
    Serialized Form
    • Field Detail

      • cleanupCount

        protected volatile int cleanupCount
        Keep track of a counter to amortize cleanup of dead cache keys
      • cleanupSize

        protected volatile int cleanupSize
        PERF: Keep track of a cleanup size to avoid cleanup bottleneck for large caches.
    • Method Detail

      • cleanupDeadCacheKeys

        protected void cleanupDeadCacheKeys()
        Search for any cache keys that have been garbage collected and remove them. This must be done because although the objects held by the cache keys will garbage collect, the keys themselves will not and must be cleaned up. This is a linear operation so is amortized through the cleanupCount to occur only once per cycle averaging to make the total time still constant.
      • createCacheKey

        public CacheKey createCacheKey​(java.lang.Object primaryKey,
                                       java.lang.Object object,
                                       java.lang.Object writeLockValue,
                                       long readTime)
        Description copied from class: AbstractIdentityMap
        Create the correct type of CacheKey for this map.
        Overrides:
        createCacheKey in class AbstractIdentityMap
      • checkCleanup

        protected void checkCleanup()
        Check if garbage collected cache keys need to be cleaned up.