public final class RamUsageEstimator extends Object
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.
shallowSizeOf(Object)
,
shallowSizeOfInstance(Class)
Modifier and Type | Field and Description |
---|---|
static boolean |
COMPRESSED_REFS_ENABLED
True, iff compressed references (oops) are enabled by this JVM
|
static long |
HASHTABLE_RAM_BYTES_PER_ENTRY
Approximate memory usage that we assign to a Hashtable / HashMap entry.
|
static long |
LINKED_HASHTABLE_RAM_BYTES_PER_ENTRY
Approximate memory usage that we assign to a LinkedHashMap entry.
|
static int |
MAX_DEPTH
Recurse only into immediate descendants.
|
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 Map<Class<?>,Integer> |
primitiveSizes
Sizes of primitive classes.
|
static int |
QUERY_DEFAULT_RAM_BYTES_USED
Approximate memory usage that we assign to all unknown queries -
this maps roughly to a BooleanQuery with a couple term clauses.
|
static int |
UNKNOWN_DEFAULT_RAM_BYTES_USED
Approximate memory usage that we assign to all unknown objects -
this maps roughly to a few primitive fields and a couple short String-s.
|
Modifier and Type | Method and Description |
---|---|
static long |
alignObjectSize(long size)
Aligns an object size to be the next multiple of
NUM_BYTES_OBJECT_ALIGNMENT . |
static String |
humanReadableUnits(long bytes)
Returns
size in human-readable units (GB, MB, KB or bytes). |
static String |
humanReadableUnits(long bytes,
DecimalFormat df)
Returns
size in human-readable units (GB, MB, KB or bytes). |
static long |
shallowSizeOf(Object obj)
Estimates a "shallow" memory usage of the given object.
|
static long |
shallowSizeOf(Object[] arr)
Returns the shallow size in bytes of the Object[] object.
|
static long |
shallowSizeOfInstance(Class<?> clazz)
Returns the shallow instance size in bytes an instance of the given class would occupy.
|
static long |
sizeOf(Accountable accountable)
Returns the size in bytes of the
Accountable object, using its
Accountable.ramBytesUsed() method. |
static long |
sizeOf(Accountable[] accountables)
Return the size of the provided array of
Accountable s by summing
up the shallow size of the array and the
memory usage reported by each
Accountable . |
static long |
sizeOf(boolean[] arr)
Returns the size in bytes of the boolean[] object.
|
static long |
sizeOf(byte[] arr)
Returns the size in bytes of the byte[] object.
|
static long |
sizeOf(char[] arr)
Returns the size in bytes of the char[] object.
|
static long |
sizeOf(double[] arr)
Returns the size in bytes of the double[] object.
|
static long |
sizeOf(float[] arr)
Returns the size in bytes of the float[] object.
|
static long |
sizeOf(int[] arr)
Returns the size in bytes of the int[] object.
|
static long |
sizeOf(Long value)
Return the size of the provided
Long object, returning 0 if it is
cached by the JVM and its shallow size otherwise. |
static long |
sizeOf(long[] arr)
Returns the size in bytes of the long[] object.
|
static long |
sizeOf(Query q)
Returns the size in bytes of a Query object.
|
static long |
sizeOf(Query q,
long defSize)
Returns the size in bytes of a Query object.
|
static long |
sizeOf(short[] arr)
Returns the size in bytes of the short[] object.
|
static long |
sizeOf(String s)
Returns the size in bytes of the String object.
|
static long |
sizeOf(String[] arr)
Returns the size in bytes of the String[] object.
|
static long |
sizeOfCollection(Collection<?> collection)
Returns the size in bytes of a Collection object, including sizes of its values, supplying
UNKNOWN_DEFAULT_RAM_BYTES_USED when object type is not well known. |
static long |
sizeOfCollection(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 long |
sizeOfMap(Map<?,?> map)
Returns the size in bytes of a Map object, including sizes of its keys and values, supplying
UNKNOWN_DEFAULT_RAM_BYTES_USED when object type is not well known. |
static long |
sizeOfMap(Map<?,?> map,
long defSize)
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.
|
static long |
sizeOfObject(Object o)
Best effort attempt to estimate the size in bytes of an undetermined object.
|
static long |
sizeOfObject(Object o,
long defSize)
Best effort attempt to estimate the size in bytes of an undetermined object.
|
public static final long ONE_KB
public static final long ONE_MB
public static final long ONE_GB
public static final boolean COMPRESSED_REFS_ENABLED
public static final int NUM_BYTES_OBJECT_REF
public static final int NUM_BYTES_OBJECT_HEADER
public static final int NUM_BYTES_ARRAY_HEADER
public static final int NUM_BYTES_OBJECT_ALIGNMENT
public static final int QUERY_DEFAULT_RAM_BYTES_USED
public static final int UNKNOWN_DEFAULT_RAM_BYTES_USED
public static final long HASHTABLE_RAM_BYTES_PER_ENTRY
public static final long LINKED_HASHTABLE_RAM_BYTES_PER_ENTRY
public static final int MAX_DEPTH
public static long alignObjectSize(long size)
NUM_BYTES_OBJECT_ALIGNMENT
.public static long sizeOf(Long value)
Long
object, returning 0 if it is
cached by the JVM and its shallow size otherwise.public static long sizeOf(byte[] arr)
public static long sizeOf(boolean[] arr)
public static long sizeOf(char[] arr)
public static long sizeOf(short[] arr)
public static long sizeOf(int[] arr)
public static long sizeOf(float[] arr)
public static long sizeOf(long[] arr)
public static long sizeOf(double[] arr)
public static long sizeOf(String[] arr)
public static long sizeOfMap(Map<?,?> map)
UNKNOWN_DEFAULT_RAM_BYTES_USED
when object type is not well known.
This method recurses up to MAX_DEPTH
.public static long sizeOfMap(Map<?,?> map, long defSize)
MAX_DEPTH
.public static long sizeOfCollection(Collection<?> collection)
UNKNOWN_DEFAULT_RAM_BYTES_USED
when object type is not well known.
This method recurses up to MAX_DEPTH
.public static long sizeOfCollection(Collection<?> collection, long defSize)
MAX_DEPTH
.public static long sizeOf(Query q)
QUERY_DEFAULT_RAM_BYTES_USED
.public static long sizeOf(Query q, long defSize)
shallowSizeOf(Object)
, or using the supplied defSize
parameter
if its value is greater than 0.public static long sizeOfObject(Object o)
UNKNOWN_DEFAULT_RAM_BYTES_USED
.public static long sizeOfObject(Object o, long defSize)
shallowSizeOf(Object)
, or using the supplied defSize
parameter if
its value is greater than 0.public static long sizeOf(Accountable accountable)
Accountable
object, using its
Accountable.ramBytesUsed()
method.public static long sizeOf(String s)
public static long shallowSizeOf(Object[] arr)
public static long shallowSizeOf(Object obj)
public static long shallowSizeOfInstance(Class<?> clazz)
IllegalArgumentException
- if clazz
is an array class.shallowSizeOf(Object)
public static String humanReadableUnits(long bytes)
size
in human-readable units (GB, MB, KB or bytes).public static String humanReadableUnits(long bytes, DecimalFormat df)
size
in human-readable units (GB, MB, KB or bytes).public static long sizeOf(Accountable[] accountables)
Accountable
s by summing
up the shallow size of the array and the
memory usage
reported by each
Accountable
.Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.