Class AbstractPool

  • All Implemented Interfaces:
    Pool
    Direct Known Subclasses:
    BoundedPool, StrictlyBoundedPool

    public abstract class AbstractPool
    extends java.lang.Object
    implements Pool
    An abstract pool implementation.

    This contains all the logic of a pool except for the actual creation of accessor instances.

    Author:
    Chris Dennis, Alex Snaps
    • Constructor Detail

      • AbstractPool

        public AbstractPool​(long maximumPoolSize,
                            PoolEvictor evictor,
                            SizeOfEngine defaultSizeOfEngine)
        Create an AbstractPool instance
        Parameters:
        maximumPoolSize - the maximum size of the pool, in bytes.
        evictor - the pool evictor, for cross-store eviction.
        defaultSizeOfEngine - the default SizeOf engine used by the accessors.
    • Method Detail

      • getSize

        public long getSize()
        Return the used size of the pool.
        Specified by:
        getSize in interface Pool
        Returns:
        used size of the pool.
      • getMaxSize

        public long getMaxSize()
        Return the maximum size of the pool.
        Specified by:
        getMaxSize in interface Pool
        Returns:
        the maximum size of the pool.
      • setMaxSize

        public void setMaxSize​(long newSize)
        Change the maximum size of the pool.
        Specified by:
        setMaxSize in interface Pool
        Parameters:
        newSize - the new pool size.
      • createPoolAccessor

        public PoolAccessor createPoolAccessor​(PoolParticipant participant,
                                               int maxDepth,
                                               boolean abortWhenMaxDepthExceeded)
        Return a PoolAccessor whose consumption is tracked by this pool, using a default SizeOf engine.
        Specified by:
        createPoolAccessor in interface Pool
        Parameters:
        participant - the participant which will use the created accessor.
        maxDepth - maximum depth of the object graph to traverse
        abortWhenMaxDepthExceeded - true if the object traversal should be aborted when the max depth is exceeded
        Returns:
        a PoolAccessor whose consumption is tracked by this pool.
      • registerPoolAccessor

        public void registerPoolAccessor​(PoolAccessor accessor)
        Register an accessor implementation with this pool.
        Specified by:
        registerPoolAccessor in interface Pool
        Parameters:
        accessor - accessor to be registered
      • removePoolAccessor

        public void removePoolAccessor​(PoolAccessor accessor)
        Remove the supplied accessor from this pool.
        Specified by:
        removePoolAccessor in interface Pool
        Parameters:
        accessor - accessor to be removed
      • getPoolAccessors

        public java.util.Collection<PoolAccessor> getPoolAccessors()
        Return the participants accessing this pool.
        Specified by:
        getPoolAccessors in interface Pool
        Returns:
        participants using this pool
      • getEvictor

        public PoolEvictor getEvictor()
        Return the pool evictor used by this pool.
        Specified by:
        getEvictor in interface Pool
        Returns:
        the pool evictor