package com.joe.utilities.core.util;
/**
* Holds sizes of Java primitives
* This is used with MemoryCounter class to estimate heap size of objects using reflections
* @link http://www.javaspecialists.co.za/archive/Issue078.html
*/
import java.util.IdentityHashMap;
import java.util.Map;
public class MemorySizes
{
private final Map<Object, Integer> primitiveSizes = new IdentityHashMap<Object, Integer>()
{
{
put(boolean.class, new Integer(1));
put(byte.class, new Integer(1));
put(char.class, new Integer(2));
put(short.class, new Integer(2));
put(int.class, new Integer(4));
put(float.class, new Integer(4));
put(double.class, new Integer(8));
put(long.class, new Integer(8));
}
};
public int getPrimitiveFieldSize(Class clazz)
{
return ((Integer) primitiveSizes.get(clazz)).intValue();
}
public int getPrimitiveArrayElementSize(Class clazz)
{
return getPrimitiveFieldSize(clazz);
}
public int getPointerSize()
{
return 4;
}
public int getClassSize()
{
return 8;
}
}