Class RamUsageEstimator

java.lang.Object
com.carrotsearch.hppc.RamUsageEstimator

public class RamUsageEstimator extends Object
Helper class that helps estimate memory usage Mostly forked from Lucene tag releases/lucene-solr/8.5.1
  • Field Details

    • ONE_KB

      public static final long ONE_KB
      One kilobyte bytes.
      See Also:
    • ONE_MB

      public static final long ONE_MB
      One megabyte bytes.
      See Also:
    • ONE_GB

      public static final long ONE_GB
      One gigabyte bytes.
      See Also:
    • COMPRESSED_REFS_ENABLED

      public static final boolean COMPRESSED_REFS_ENABLED
      True, iff compressed references (oops) are enabled by this JVM
    • NUM_BYTES_OBJECT_REF

      public static final int NUM_BYTES_OBJECT_REF
      Number of bytes this JVM uses to represent an object reference.
    • NUM_BYTES_OBJECT_HEADER

      public static final int NUM_BYTES_OBJECT_HEADER
      Number of bytes to represent an object header (no fields, no alignments).
    • NUM_BYTES_ARRAY_HEADER

      public static final int NUM_BYTES_ARRAY_HEADER
      Number of bytes to represent an array header (no content, but with alignments).
    • NUM_BYTES_OBJECT_ALIGNMENT

      public static final int NUM_BYTES_OBJECT_ALIGNMENT
      A constant specifying the object alignment boundary inside the JVM. Objects will always take a full multiple of this constant, possibly wasting some space.
    • primitiveSizes

      public static final Map<Class<?>,Integer> primitiveSizes
      Sizes of primitive classes.
    • JRE_IS_64BIT

      static final boolean JRE_IS_64BIT
    • MANAGEMENT_FACTORY_CLASS

      static final String MANAGEMENT_FACTORY_CLASS
      See Also:
    • HOTSPOT_BEAN_CLASS

      static final String HOTSPOT_BEAN_CLASS
      See Also:
    • OS_ARCH

      static final String OS_ARCH
  • Constructor Details

    • RamUsageEstimator

      private RamUsageEstimator()
      No instantiation.
  • Method Details

    • alignObjectSize

      public static long alignObjectSize(long size)
      Aligns an object size to be the next multiple of NUM_BYTES_OBJECT_ALIGNMENT.
    • shallowSizeOfInstance

      public static long shallowSizeOfInstance(Class<?> clazz)
      Returns the shallow instance size in bytes an instance of the given class would occupy. This works with all conventional classes and primitive types, but not with arrays (the size then depends on the number of elements and varies from object to object).
      Throws:
      IllegalArgumentException - if clazz is an array class.
      See Also:
    • shallowSizeOf

      public static long shallowSizeOf(Object obj)
      Estimates a "shallow" memory usage of the given object. For arrays, this will be the memory taken by array storage (no subreferences will be followed). For objects, this will be the memory taken by the fields. JVM object alignments are also applied.
    • shallowUsedSizeOfArray

      public static long shallowUsedSizeOfArray(Object array, int usedSize)
      Return used part of shallow size of any array.
      Parameters:
      usedSize - Size that array is actually used
    • shallowSizeOfArray

      private static long shallowSizeOfArray(Object array)
      Return shallow size of any array.
    • adjustForField

      static long adjustForField(long sizeSoFar, Field f)
      This method returns the maximum representation size of an object. sizeSoFar is the object's size measured so far. f is the field being probed.

      The returned offset will be the maximum of whatever was measured so far and f field's offset and representation size (unaligned).