Class BoundedProportionalArraySizingStrategy

java.lang.Object
com.carrotsearch.hppc.BoundedProportionalArraySizingStrategy
All Implemented Interfaces:
Accountable, ArraySizingStrategy

public final class BoundedProportionalArraySizingStrategy extends Object implements ArraySizingStrategy
Array resizing proportional to the current buffer size, optionally kept within the given minimum and maximum growth limits. Java's ArrayList uses:
 minGrow = 1
 maxGrow = Integer.MAX_VALUE (unbounded)
 growRatio = 1.5f
 
  • Field Details

    • DEFAULT_INSTANCE

      public static final BoundedProportionalArraySizingStrategy DEFAULT_INSTANCE
      Instance of BoundedProportionalArraySizingStrategy with default values.
    • MAX_ARRAY_LENGTH

      public static final int MAX_ARRAY_LENGTH
      Maximum allocable array length (approximately the largest positive integer decreased by the array's object header).
      See Also:
    • DEFAULT_MIN_GROW_COUNT

      public static final int DEFAULT_MIN_GROW_COUNT
      Minimum grow count.
      See Also:
    • DEFAULT_MAX_GROW_COUNT

      public static final int DEFAULT_MAX_GROW_COUNT
      Maximum grow count (unbounded).
      See Also:
    • DEFAULT_GROW_RATIO

      public static final float DEFAULT_GROW_RATIO
      Default resize is by half the current buffer's size.
      See Also:
    • minGrowCount

      public final int minGrowCount
      Minimum number of elements to grow, if limit exceeded.
    • maxGrowCount

      public final int maxGrowCount
      Maximum number of elements to grow, if limit exceeded.
    • growRatio

      public final float growRatio
      The current buffer length is multiplied by this ratio to get the first estimate for the new size. To double the size of the current buffer, for example, set to 2.
  • Constructor Details

    • BoundedProportionalArraySizingStrategy

      public BoundedProportionalArraySizingStrategy()
      Create the default sizing strategy.
    • BoundedProportionalArraySizingStrategy

      public BoundedProportionalArraySizingStrategy(int minGrow, int maxGrow, float ratio)
      Create the sizing strategy with custom policies.
      Parameters:
      minGrow - Minimum number of elements to grow by when expanding.
      maxGrow - Maximum number of elements to grow by when expanding.
      ratio - The ratio of expansion compared to the previous buffer size.
  • Method Details

    • grow

      public int grow(int currentBufferLength, int elementsCount, int expectedAdditions)
      Grow according to growRatio, minGrowCount and maxGrowCount.
      Specified by:
      grow in interface ArraySizingStrategy
      Parameters:
      currentBufferLength - The current length of the buffer.
      elementsCount - The number of elements stored in the buffer.
      expectedAdditions - The number of expected additions to the buffer.
      Returns:
      New buffer size.
    • ramBytesAllocated

      public long ramBytesAllocated()
      Description copied from interface: Accountable
      Allocated memory estimation
      Specified by:
      ramBytesAllocated in interface Accountable
      Returns:
      Ram allocated in bytes
    • ramBytesUsed

      public long ramBytesUsed()
      Description copied from interface: Accountable
      Bytes that is actually been used
      Specified by:
      ramBytesUsed in interface Accountable
      Returns:
      Ram used in bytes