Class ObjectCache<T>

java.lang.Object
ghidra.util.datastruct.ObjectCache<T>
Type Parameters:
T - Object type held by cache

public class ObjectCache<T> extends Object
ObjectClass provides a fixed-size long-key-based object cache. Both a hard and weak cache are maintained, where the weak cache is only limited by available memory. This cache mechanism is useful in ensuring that only a single object instance for a given key exists.

The weak cache is keyed, while the hard cache simply maintains the presence of an object in the weak cache.

  • Constructor Summary

    Constructors
    Constructor
    Description
    ObjectCache(int hardCacheSize)
    Construct a keyed-object cache of size hardCacheSize.
  • Method Summary

    Modifier and Type
    Method
    Description
    computeIfAbsent(long key, Function<Long,T> mappingFunction)
    Get the current cached object which corresponds to specified key if contained in cache, otherwise the mappingFunction will be invoked to instantiate a new object where that object will be added to the cache and returned.
    boolean
    contains(long key)
    Determine if the keyed-object exists in the cache.
    get(long key)
    Get the object from cache which corresponds to the specified key.
    void
    put(long key, T obj)
    Add an object to the cache
    void
    remove(long key)
    Remove the specified keyed object from both hard and weak caches.
    void
    setHardCacheSize(int size)
    Adjust the hard cache size
    int
    Return the hard cache size

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ObjectCache

      public ObjectCache(int hardCacheSize)
      Construct a keyed-object cache of size hardCacheSize.
      Parameters:
      hardCacheSize - hard cache size.
  • Method Details

    • contains

      public boolean contains(long key)
      Determine if the keyed-object exists in the cache.
      Parameters:
      key - object key
      Returns:
      true if object is cached
    • get

      public T get(long key)
      Get the object from cache which corresponds to the specified key.
      Parameters:
      key - object key
      Returns:
      cached object
    • computeIfAbsent

      public T computeIfAbsent(long key, Function<Long,T> mappingFunction)
      Get the current cached object which corresponds to specified key if contained in cache, otherwise the mappingFunction will be invoked to instantiate a new object where that object will be added to the cache and returned. If the mappingFunction returns null nothing will be added to the cache and null will be returned by this method.
      Parameters:
      key - object key
      mappingFunction - function used to obtain a new object if not currently present in cache.
      Returns:
      cached object
    • size

      public int size()
      Return the hard cache size
      Returns:
      the hard cache size
    • setHardCacheSize

      public void setHardCacheSize(int size)
      Adjust the hard cache size
      Parameters:
      size - new hard cache size
    • put

      public void put(long key, T obj)
      Add an object to the cache
      Parameters:
      key - object key
      obj - the object
    • remove

      public void remove(long key)
      Remove the specified keyed object from both hard and weak caches. An object should be removed from the cache when it becomes invalid.
      Parameters:
      key - object key