Class RamUsageEstimator


  • public class RamUsageEstimator
    extends java.lang.Object
    Helper class that helps estimate memory usage

    Mostly forked from Lucene tag releases/lucene-solr/8.5.1

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static boolean COMPRESSED_REFS_ENABLED
      True, iff compressed references (oops) are enabled by this JVM
      static int NUM_BYTES_ARRAY_HEADER
      Number of bytes to represent an array header (no content, but with alignments).
      static int NUM_BYTES_OBJECT_ALIGNMENT
      A constant specifying the object alignment boundary inside the JVM.
      static int NUM_BYTES_OBJECT_HEADER
      Number of bytes to represent an object header (no fields, no alignments).
      static int NUM_BYTES_OBJECT_REF
      Number of bytes this JVM uses to represent an object reference.
      static long ONE_GB
      One gigabyte bytes.
      static long ONE_KB
      One kilobyte bytes.
      static long ONE_MB
      One megabyte bytes.
      static java.util.Map<java.lang.Class<?>,​java.lang.Integer> primitiveSizes
      Sizes of primitive classes.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static long alignObjectSize​(long size)
      Aligns an object size to be the next multiple of NUM_BYTES_OBJECT_ALIGNMENT.
      static long shallowSizeOfArray​(java.lang.Object array)
      Return shallow size of any array.
      static long shallowUsedSizeOfArray​(java.lang.Object array, int usedSize)
      Return used part of shallow size of any array.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • 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 java.util.Map<java.lang.Class<?>,​java.lang.Integer> primitiveSizes
        Sizes of primitive classes.
    • Method Detail

      • alignObjectSize

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

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

        public static long shallowSizeOfArray​(java.lang.Object array)
        Return shallow size of any array.