Class ByteArrayCache

  • All Implemented Interfaces:
    java.lang.Iterable<byte[]>, java.util.Collection<byte[]>

    public class ByteArrayCache
    extends CacheCollection<byte[]>
    Implements byte-array (byte[]) cache collection to minimise memory re-allocation.

    N.B. This is useful to re-use short-lived data storage container to minimise the amount of garbage to be collected. This is used in situation replacing e.g.

      
          public returnValue frequentlyExecutedFunction(...) {
              final byte[] storage = new byte[10000]; // allocate new memory block (costly)
              // [...] do short-lived computation on storage
              // storage is implicitly finalised by garbage collector (costly)
          }
      
     
    with
      
          // ...
          private final ByteArrayCache cache = new ByteArrayCache();
          // ...
          
          public returnValue frequentlyExecutedFunction(...) {
              final byte[] storage = cache.getArray(10000); // return previously allocated array (cheap) or allocated new if necessary 
              // [...] do short-lived computation on storage
              cache.add(storage); // return object to cache
          }
      
     
    Author:
    rstein
    • Constructor Summary

      Constructors 
      Constructor Description
      ByteArrayCache()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] getArray​(int requiredSize)  
      byte[] getArrayExact​(int requiredSize)  
      static ByteArrayCache getInstance()  
      • Methods inherited from class java.util.AbstractCollection

        addAll, containsAll, isEmpty, removeAll, retainAll, toArray, toArray, toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Collection

        equals, hashCode, parallelStream, removeIf, spliterator, stream, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
    • Constructor Detail

      • ByteArrayCache

        public ByteArrayCache()
    • Method Detail

      • getArray

        public byte[] getArray​(int requiredSize)
      • getArrayExact

        public byte[] getArrayExact​(int requiredSize)