Class ClassSize
java.lang.Object
org.apache.derby.iapi.services.cache.ClassSize
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int
private static final int
private static final int
private static boolean
private static final int
private static final int
private static final int
private static final int
(package private) static boolean
private static final int
static final int
private static final int
(package private) static boolean
private static final int[]
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic int
Estimate the static space taken up by a class instance.static int
static int
estimateBase
(Class cl) Estimate the static space taken up by the fields of a class.static int
Estimate the static space taken up by a class instance from cataloged coefficients.private static int
estimateBaseFromCatalog
(Class<?> cls, boolean addToCatalog) static int
estimateBaseFromCoefficients
(int[] coeff) Estimate the static space taken up by a class instance given the coefficients returned by getSizeCoefficients.static int
Estimate the size of a Hashtable entry.static int
Estimate the size of a string.private static final int
Tries to determine the reference size in bytes by checking whether the VM we're running in is 32 or 64 bit by looking at the system properties.static int
static int
Get the estimate of the size of an object reference.static int[]
The estimate of the size of a class instance depends on whether the JVM uses 32 or 64 bit addresses, that is it depends on the size of an object reference.private static final String
getSystemProperty
(String propName) Attempts to read the specified system property.static void
do not try to use the catalog.
-
Field Details
-
refSize
public static final int refSize -
objectOverhead
private static final int objectOverhead- See Also:
-
booleanSize
private static final int booleanSize- See Also:
-
charSize
private static final int charSize- See Also:
-
shortSize
private static final int shortSize- See Also:
-
intSize
private static final int intSize- See Also:
-
longSize
private static final int longSize- See Also:
-
floatSize
private static final int floatSize- See Also:
-
doubleSize
private static final int doubleSize- See Also:
-
minObjectSize
private static final int minObjectSize -
dummyCatalog
private static boolean dummyCatalog -
noGuess
static boolean noGuess -
unitTest
static boolean unitTest -
wildGuess
private static final int[] wildGuess
-
-
Constructor Details
-
ClassSize
public ClassSize()
-
-
Method Details
-
setDummyCatalog
public static void setDummyCatalog()do not try to use the catalog. -
getRefSize
public static int getRefSize()Get the estimate of the size of an object reference.- Returns:
- the estimate in bytes.
-
getIntSize
public static int getIntSize()- Returns:
- the estimate of the size of a primitive int
-
getSizeCoefficients
The estimate of the size of a class instance depends on whether the JVM uses 32 or 64 bit addresses, that is it depends on the size of an object reference. It is a linear function of the size of a reference, e.g. 24 + 5*r where r is the size of a reference (usually 4 or 8 bytes). This method returns the coefficients of the linear function, e.g. {24, 5} in the above example.- Parameters:
cl
- A class whose instance size is to be estimated- Returns:
- an array of 2 integers. The first integer is the constant part of the function, the second is the reference size coefficient.
-
estimateBaseFromCoefficients
public static int estimateBaseFromCoefficients(int[] coeff) Estimate the static space taken up by a class instance given the coefficients returned by getSizeCoefficients.- Parameters:
coeff
- the coefficients- Returns:
- the size estimate, in bytes
-
estimateBaseFromCatalog
Estimate the static space taken up by a class instance from cataloged coefficients.- Parameters:
cls
- the class- Returns:
- the size estimate, in bytes
- See Also:
-
estimateBaseFromCatalog
-
estimateAndCatalogBase
Estimate the static space taken up by a class instance. Save the coefficients in a catalog.- Parameters:
cls
- the class- Returns:
- the size estimate, in bytes
- See Also:
-
estimateBase
Estimate the static space taken up by the fields of a class. This includes the space taken up by by references (the pointer) but not by the referenced object. So the estimated size of an array field does not depend on the size of the array. Similarly the size of an object (reference) field does not depend on the object.- Returns:
- the size estimate in bytes. Note that this method will throw a SecurityException if the SecurityManager does not let this class execute the method Class.getDeclaredFields(). If this is a concern try to compute the size coefficients at build time. see org.apache.derbyBuild.ClassSizeCrawler
- See Also:
-
estimateArrayOverhead
public static int estimateArrayOverhead()- Returns:
- the estimated overhead of an array. The estimated size of an x[n] array is estimateArrayOverhead() + n*sizeOf(x).
-
estimateHashEntrySize
public static int estimateHashEntrySize()Estimate the size of a Hashtable entry. In Java 1.2 we can use Map.entry, but this is not available in earlier versions of Java.- Returns:
- the estimate, in bytes
-
estimateMemoryUsage
Estimate the size of a string.- Returns:
- the estimated size, in bytes
-
fetchRefSizeFromSystemProperties
private static final int fetchRefSizeFromSystemProperties()Tries to determine the reference size in bytes by checking whether the VM we're running in is 32 or 64 bit by looking at the system properties.- Returns:
- The reference size in bytes as specified or implied by the VM,
or
-1
if the reference size couldn't be determined.
-
getSystemProperty
Attempts to read the specified system property.- Parameters:
propName
- name of the system property to read- Returns:
- The property value, or
null
if it doesn't exist or the required permission to read the property is missing.
-