public class SimpleMemoryCalculator extends Base implements OldCache.UnitCalculator
This implementation can only determine an accurate entry size if both the entry key and value object types are one of the following classes (or an array thereof or of the primitive forms thereof):
Binary
If either the key or value object is not one of these types, an exception will be thrown during the unit calculation.
Base.LoggingWriter, Base.StackFrame
Modifier and Type | Field and Description |
---|---|
static Map |
MAP_FIXED_SIZES
An immutable map of fixed-sized classes to instance size (in bytes).
|
static Map |
MAP_PRIMITIVE_SIZES
An imutable map of primitive types to their size (in bytes).
|
protected static int |
SIZE_BASIC_OBJECT
The unalligned size of the simplest object.
|
static int |
SIZE_BIGDECIMAL
The size (in bytes) of a
BigDecimal object. |
static int |
SIZE_BIGINTEGER
The size (in bytes) of a
BigInteger object. |
static int |
SIZE_BINARY
The minimum size (in bytes) of a
Binary object. |
static int |
SIZE_BOOLEAN
The size (in bytes) of a
Boolean object. |
static int |
SIZE_BYTE
The size (in bytes) of a
Byte object. |
static int |
SIZE_CHARACTER
The size (in bytes) of a
Character object. |
static int |
SIZE_DATE
|
static int |
SIZE_DOUBLE
The size (in bytes) of a
Double object. |
static int |
SIZE_ENTRY
The minimum size (in bytes) of an
LocalCache.Entry object. |
static int |
SIZE_FLOAT
The size (in bytes) of a
Float object. |
static int |
SIZE_INTEGER
The size (in bytes) of a
Integer object. |
static int |
SIZE_LONG
The size (in bytes) of a
Long object. |
static int |
SIZE_OBJECT
The size (in bytes) of an
Object . |
static int |
SIZE_OBJECT_REF
The size (in bytes) of an object reference.
|
static int |
SIZE_SHORT
The size (in bytes) of a
Short object. |
static int |
SIZE_STRING
The minimum size (in bytes) of a
String object. |
static int |
SIZE_TIMESTAMP
The size (in bytes) of a
Timestamp object. |
Constructor and Description |
---|
SimpleMemoryCalculator() |
Modifier and Type | Method and Description |
---|---|
protected static int |
calculateShallowSize(Class clz)
Calculate the approximate number of bytes required to store an instance of the given class and its non-static fields in memory.
|
int |
calculateUnits(Object oKey, Object oValue)
Calculate a cache cost for the specified cache entry key and value.
|
protected int |
getEntrySize()
Return the size of a map entry.
|
String |
getName()
Obtain the name of the unit calculator.
|
static boolean |
isInnerClass(Class clz)
Return true if a given class is an inner class.
|
static void |
main(String[] asArg)
Unit test.
|
protected static int |
padMemorySize(int cb)
Round the given number of bytes to the next closest integer that is divisible by 8.
|
protected int |
sizeOf(Class clz)
Determine the minimum number of bytes required to store an instance of the given fixed-sized class in memory.
|
int |
sizeOf(Object o)
Estimate the number of bytes of memory consumed by the given object.
|
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
public static final int SIZE_OBJECT_REF
On a 32 bit JVM, an object reference is 4 bytes. On a 64 bit JVM, an object reference is 8 bytes.
public static final int SIZE_OBJECT
Object
.public static final int SIZE_BOOLEAN
Boolean
object.public static final int SIZE_BYTE
Byte
object.public static final int SIZE_SHORT
Short
object.public static final int SIZE_CHARACTER
Character
object.public static final int SIZE_INTEGER
Integer
object.public static final int SIZE_FLOAT
Float
object.public static final int SIZE_LONG
Long
object.public static final int SIZE_DOUBLE
Double
object.public static final int SIZE_DATE
public static final int SIZE_TIMESTAMP
Timestamp
object.public static final int SIZE_BIGINTEGER
BigInteger
object.public static final int SIZE_BIGDECIMAL
BigDecimal
object.public static final int SIZE_STRING
String
object.public static final int SIZE_BINARY
Binary
object.public static final int SIZE_ENTRY
LocalCache.Entry
object.public static final Map MAP_FIXED_SIZES
public static final Map MAP_PRIMITIVE_SIZES
protected static final int SIZE_BASIC_OBJECT
public int calculateUnits(Object oKey, Object oValue)
calculateUnits
in interface ConfigurableCacheMap.UnitCalculator
oKey
- the cache key to evaluate for unit costoValue
- the cache value to evaluate for unit costpublic String getName()
getName
in interface ConfigurableCacheMap.UnitCalculator
protected int getEntrySize()
public int sizeOf(Object o)
The calculation is based on the class of the given object, with reference types assumed to be aligned on a 8-byte boundary:
Class Size boolean 1 byte 1 short 2 char 2 int 4 long 8 float 4 double 8 Object SIZE_OBJECT
Boolean SIZE_OBJECT
+ 1Byte SIZE_OBJECT
+ 1Short SIZE_OBJECT
+ 2Character SIZE_OBJECT
+ 2Integer SIZE_OBJECT
+ 4Long SIZE_OBJECT
+ 8Float SIZE_OBJECT
+ 4Double SIZE_OBJECT
+ 8BigInteger SIZE_OBJECT
+ 48BigDecimal SIZE_OBJECT
+ 4 +SIZE_OBJECT_REF
+SIZE_BIGINTEGER
Date SIZE_OBJECT
+SIZE_OBJECT_REF
+ 8Time SIZE_OBJECT
+SIZE_OBJECT_REF
+ 8Timestamp SIZE_OBJECT
+SIZE_OBJECT_REF
+ 12Binary SIZE_BINARY
+ arrayString SIZE_STRING
+ arrayarray SIZE_OBJECT
+ 4 + [element size]*length()
o
- the object to measure the size ofIllegalArgumentException
- if the type of the object is not one of the classes listed aboveprotected int sizeOf(Class clz)
The calculation is based on the following table, with reference types assumed to be aligned on an 16-byte boundary:
Class Size boolean 1 byte 1 short 2 char 2 int 4 long 8 float 4 double 8 Object SIZE_OBJECT
Boolean SIZE_OBJECT
+ 1Byte SIZE_OBJECT
+ 1Short SIZE_OBJECT
+ 2Character SIZE_OBJECT
+ 2Integer SIZE_OBJECT
+ 4Long SIZE_OBJECT
+ 8Float SIZE_OBJECT
+ 4Double SIZE_OBJECT
+ 8BigInteger SIZE_OBJECT
+ 48BigDecimal SIZE_OBJECT
+ 4 +SIZE_OBJECT_REF
+SIZE_BIGINTEGER
Date SIZE_OBJECT
+SIZE_OBJECT_REF
+ 8Time SIZE_OBJECT
+SIZE_OBJECT_REF
+ 8Timestamp SIZE_OBJECT
+SIZE_OBJECT_REF
+ 12
clz
- the target classIllegalArgumentException
- if the type of the object is not one of the classes listed aboveprotected static int padMemorySize(int cb)
This method is used to pad the result of a memory calculation assuming that fields are ordered to minimize padding and that allocation granularity is 8 bytes.
cb
- the number of bytes to roundprotected static int calculateShallowSize(Class clz)
The size calculation is shallow, in that fields that are references to variable-sized classes are not included in the estimate.
clz
- the target classpublic static boolean isInnerClass(Class clz)
clz
- the class to checkpublic static void main(String[] asArg)
Usage:
java com.tangosol.net.cache.SimpleMemoryCalculator [class name]
asArg
- command line arguments