Class ReaderCache<T>

  • Direct Known Subclasses:
    StringCache, TemplateCache

    public abstract class ReaderCache<T>
    extends Object
    A cache consisting of a fast and slow component. The fast cache for small items is based on an array, and a slow one uses a LIRS cache.
    • Constructor Detail

      • ReaderCache

        protected ReaderCache​(long maxWeight,
                              int averageWeight,
                              @NotNull
                              @NotNull String name,
                              @NotNull
                              @NotNull org.apache.jackrabbit.guava.common.cache.Weigher<org.apache.jackrabbit.oak.segment.ReaderCache.CacheKey,​T> weigher)
        Create a new string cache.
        Parameters:
        maxWeight - the maximum memory in bytes.
        averageWeight - an estimate for the average weight of the elements in the cache. See CacheLIRS.setAverageMemory(int).
        weigher - Needed to provide an estimation of the cache weight in memory
    • Method Detail

      • getStats

        @NotNull
        public @NotNull CacheStats getStats()
      • get

        @NotNull
        public T get​(long msb,
                     long lsb,
                     int offset,
                     Function<Integer,​T> loader)
        Get the value, loading it if necessary.
        Parameters:
        msb - the msb of the segment
        lsb - the lsb of the segment
        offset - the offset
        loader - the loader function
        Returns:
        the value
      • clear

        public void clear()
        Clear the cache.
      • isSmall

        protected abstract boolean isSmall​(T value)
        Determine whether the entry is small, in which case it can be kept in the fast cache.