Package org.apache.lucene.util
Class RamUsageEstimator
java.lang.Object
org.apache.lucene.util.RamUsageEstimator
Estimates the size (memory representation) of Java objects.
This class uses assumptions that were discovered for the Hotspot virtual machine. If you use a non-OpenJDK/Oracle-based JVM, the measurements may be slightly wrong.
- See Also:
- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final booleanTrue, iff compressed references (oops) are enabled by this JVMstatic final longApproximate memory usage that we assign to a Hashtable / HashMap entry.static final longApproximate memory usage that we assign to a LinkedHashMap entry.static final intRecurse only into immediate descendants.static final intNumber of bytes to represent an array header (no content, but with alignments).static final intA constant specifying the object alignment boundary inside the JVM.static final intNumber of bytes to represent an object header (no fields, no alignments).static final intNumber of bytes this JVM uses to represent an object reference.static final longOne gigabyte bytes.static final longOne kilobyte bytes.static final longOne megabyte bytes.Sizes of primitive classes.static final intApproximate memory usage that we assign to all unknown queries - this maps roughly to a BooleanQuery with a couple term clauses.static final intApproximate memory usage that we assign to all unknown objects - this maps roughly to a few primitive fields and a couple short String-s. -
Method Summary
Modifier and TypeMethodDescriptionstatic longadjustForField(long sizeSoFar, Field f) This method returns the maximum representation size of an object.static longalignObjectSize(long size) Aligns an object size to be the next multiple ofNUM_BYTES_OBJECT_ALIGNMENT.static StringhumanReadableUnits(long bytes) Returnssizein human-readable units (GB, MB, KB or bytes).static StringhumanReadableUnits(long bytes, DecimalFormat df) Returnssizein human-readable units (GB, MB, KB or bytes).static longshallowSizeOf(boolean[] arr) Returns the size in bytes of the boolean[] object.static longshallowSizeOf(byte[] arr) Returns the size in bytes of the byte[] object.static longshallowSizeOf(char[] arr) Returns the size in bytes of the char[] object.static longshallowSizeOf(double[] arr) Returns the size in bytes of the double[] object.static longshallowSizeOf(float[] arr) Returns the size in bytes of the float[] object.static longshallowSizeOf(int[] arr) Returns the size in bytes of the int[] object.static longshallowSizeOf(long[] arr) Returns the size in bytes of the long[] object.static longshallowSizeOf(short[] arr) Returns the size in bytes of the short[] object.static longshallowSizeOf(Object obj) Estimates a "shallow" memory usage of the given object.static longshallowSizeOf(Object[] arr) Returns the shallow size in bytes of the Object[] object.static longshallowSizeOfInstance(Class<?> clazz) Returns the shallow instance size in bytes an instance of the given class would occupy.static longsizeOf(boolean[] arr) Returns the size in bytes of the boolean[] object.static longsizeOf(byte[] arr) Returns the size in bytes of the byte[] object.static longsizeOf(char[] arr) Returns the size in bytes of the char[] object.static longsizeOf(double[] arr) Returns the size in bytes of the double[] object.static longsizeOf(float[] arr) Returns the size in bytes of the float[] object.static longsizeOf(int[] arr) Returns the size in bytes of the int[] object.static longsizeOf(long[] arr) Returns the size in bytes of the long[] object.static longsizeOf(short[] arr) Returns the size in bytes of the short[] object.static longReturn the shallow size of the providedIntegerobject.static longReturn the shallow size of the providedLongobject.static longReturns the size in bytes of the String object.static longReturns the size in bytes of the String[] object.static longReturns the size in bytes of a Query object.static longReturns the size in bytes of a Query object.static longsizeOf(Accountable accountable) Returns the size in bytes of theAccountableobject, using itsAccountable.ramBytesUsed()method.static longsizeOf(Accountable[] accountables) Return the size of the provided array ofAccountables by summing up the shallow size of the array and thememory usagereported by eachAccountable.static longsizeOfCollection(Collection<?> collection) Returns the size in bytes of a Collection object, including sizes of its values, supplyingUNKNOWN_DEFAULT_RAM_BYTES_USEDwhen object type is not well known.static longsizeOfCollection(Collection<?> collection, long defSize) Returns the size in bytes of a Collection object, including sizes of its values, supplying default object size when object type is not well known.static longReturns the size in bytes of a Map object, including sizes of its keys and values, supplyingUNKNOWN_DEFAULT_RAM_BYTES_USEDwhen object type is not well known.static longReturns the size in bytes of a Map object, including sizes of its keys and values, supplying default object size when object type is not well known.static longBest effort attempt to estimate the size in bytes of an undetermined object.static longsizeOfObject(Object o, long defSize) Best effort attempt to estimate the size in bytes of an undetermined object.
-
Field Details
-
ONE_KB
public static final long ONE_KBOne kilobyte bytes.- See Also:
-
ONE_MB
public static final long ONE_MBOne megabyte bytes.- See Also:
-
ONE_GB
public static final long ONE_GBOne gigabyte bytes.- See Also:
-
COMPRESSED_REFS_ENABLED
public static final boolean COMPRESSED_REFS_ENABLEDTrue, iff compressed references (oops) are enabled by this JVM -
NUM_BYTES_OBJECT_REF
public static final int NUM_BYTES_OBJECT_REFNumber of bytes this JVM uses to represent an object reference. -
NUM_BYTES_OBJECT_HEADER
public static final int NUM_BYTES_OBJECT_HEADERNumber of bytes to represent an object header (no fields, no alignments). -
NUM_BYTES_ARRAY_HEADER
public static final int NUM_BYTES_ARRAY_HEADERNumber of bytes to represent an array header (no content, but with alignments). -
NUM_BYTES_OBJECT_ALIGNMENT
public static final int NUM_BYTES_OBJECT_ALIGNMENTA constant specifying the object alignment boundary inside the JVM. Objects will always take a full multiple of this constant, possibly wasting some space. -
QUERY_DEFAULT_RAM_BYTES_USED
public static final int QUERY_DEFAULT_RAM_BYTES_USEDApproximate memory usage that we assign to all unknown queries - this maps roughly to a BooleanQuery with a couple term clauses.- See Also:
-
UNKNOWN_DEFAULT_RAM_BYTES_USED
public static final int UNKNOWN_DEFAULT_RAM_BYTES_USEDApproximate memory usage that we assign to all unknown objects - this maps roughly to a few primitive fields and a couple short String-s.- See Also:
-
primitiveSizes
Sizes of primitive classes. -
HASHTABLE_RAM_BYTES_PER_ENTRY
public static final long HASHTABLE_RAM_BYTES_PER_ENTRYApproximate memory usage that we assign to a Hashtable / HashMap entry. -
LINKED_HASHTABLE_RAM_BYTES_PER_ENTRY
public static final long LINKED_HASHTABLE_RAM_BYTES_PER_ENTRYApproximate memory usage that we assign to a LinkedHashMap entry. -
MAX_DEPTH
public static final int MAX_DEPTHRecurse only into immediate descendants.- See Also:
-
-
Method Details
-
alignObjectSize
public static long alignObjectSize(long size) Aligns an object size to be the next multiple ofNUM_BYTES_OBJECT_ALIGNMENT. -
sizeOf
Return the shallow size of the providedIntegerobject. Ignores the possibility that this object is part of the VM IntegerCache -
sizeOf
Return the shallow size of the providedLongobject. Ignores the possibility that this object is part of the VM LongCache -
sizeOf
public static long sizeOf(byte[] arr) Returns the size in bytes of the byte[] object. -
sizeOf
public static long sizeOf(boolean[] arr) Returns the size in bytes of the boolean[] object. -
sizeOf
public static long sizeOf(char[] arr) Returns the size in bytes of the char[] object. -
sizeOf
public static long sizeOf(short[] arr) Returns the size in bytes of the short[] object. -
sizeOf
public static long sizeOf(int[] arr) Returns the size in bytes of the int[] object. -
sizeOf
public static long sizeOf(float[] arr) Returns the size in bytes of the float[] object. -
sizeOf
public static long sizeOf(long[] arr) Returns the size in bytes of the long[] object. -
sizeOf
public static long sizeOf(double[] arr) Returns the size in bytes of the double[] object. -
sizeOf
Returns the size in bytes of the String[] object. -
sizeOfMap
Returns the size in bytes of a Map object, including sizes of its keys and values, supplyingUNKNOWN_DEFAULT_RAM_BYTES_USEDwhen object type is not well known. This method recurses up toMAX_DEPTH. -
sizeOfMap
Returns the size in bytes of a Map object, including sizes of its keys and values, supplying default object size when object type is not well known. This method recurses up toMAX_DEPTH. -
sizeOfCollection
Returns the size in bytes of a Collection object, including sizes of its values, supplyingUNKNOWN_DEFAULT_RAM_BYTES_USEDwhen object type is not well known. This method recurses up toMAX_DEPTH. -
sizeOfCollection
Returns the size in bytes of a Collection object, including sizes of its values, supplying default object size when object type is not well known. This method recurses up toMAX_DEPTH. -
sizeOf
Returns the size in bytes of a Query object. Unknown query types will be estimated asQUERY_DEFAULT_RAM_BYTES_USED. -
sizeOf
Returns the size in bytes of a Query object. Unknown query types will be estimated usingshallowSizeOf(Object), or using the supplieddefSizeparameter if its value is greater than 0. -
sizeOfObject
Best effort attempt to estimate the size in bytes of an undetermined object. Known types will be estimated according to their formulas, and all other object sizes will be estimated asUNKNOWN_DEFAULT_RAM_BYTES_USED. -
sizeOfObject
Best effort attempt to estimate the size in bytes of an undetermined object. Known types will be estimated according to their formulas, and all other object sizes will be estimated usingshallowSizeOf(Object), or using the supplieddefSizeparameter if its value is greater than 0. -
sizeOf
Returns the size in bytes of theAccountableobject, using itsAccountable.ramBytesUsed()method. -
sizeOf
Returns the size in bytes of the String object. -
shallowSizeOf
public static long shallowSizeOf(byte[] arr) Returns the size in bytes of the byte[] object. -
shallowSizeOf
public static long shallowSizeOf(boolean[] arr) Returns the size in bytes of the boolean[] object. -
shallowSizeOf
public static long shallowSizeOf(char[] arr) Returns the size in bytes of the char[] object. -
shallowSizeOf
public static long shallowSizeOf(short[] arr) Returns the size in bytes of the short[] object. -
shallowSizeOf
public static long shallowSizeOf(int[] arr) Returns the size in bytes of the int[] object. -
shallowSizeOf
public static long shallowSizeOf(float[] arr) Returns the size in bytes of the float[] object. -
shallowSizeOf
public static long shallowSizeOf(long[] arr) Returns the size in bytes of the long[] object. -
shallowSizeOf
public static long shallowSizeOf(double[] arr) Returns the size in bytes of the double[] object. -
shallowSizeOf
Returns the shallow size in bytes of the Object[] object. -
shallowSizeOf
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.
-
shallowSizeOfInstance
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- ifclazzis an array class.- See Also:
-
adjustForField
This method returns the maximum representation size of an object.sizeSoFaris the object's size measured so far.fis the field being probed.The returned offset will be the maximum of whatever was measured so far and
ffield's offset and representation size (unaligned). -
humanReadableUnits
Returnssizein human-readable units (GB, MB, KB or bytes). -
humanReadableUnits
Returnssizein human-readable units (GB, MB, KB or bytes). -
sizeOf
Return the size of the provided array ofAccountables by summing up the shallow size of the array and thememory usagereported by eachAccountable.
-