Сколько памяти на хипе заuмет Object (то есть
23-12-2004 18:18
к комментариям - к полной версии
- понравилось!
Сколько памяти на хипе заuмет Object (то есть полученныж как Object object = new Object()) . Сколко памяти нужно на объект если он содержит поле типа byte (boolean, int, long, double, float)?
а так проверяем:
class MemoryTest
{
public long calculateMemoryUsage(ObjectFactory factory)
{
Object handle = factory.makeObject();
long mem0 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
long mem1 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
handle = null;
System.gc(); System.gc(); System.gc(); System.gc();
System.gc(); System.gc(); System.gc(); System.gc();
System.gc(); System.gc(); System.gc(); System.gc();
System.gc(); System.gc(); System.gc(); System.gc();
mem0 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
handle = factory.makeObject();
mem1 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
return mem1 - mem0;
}
public void showMemoryUsage(ObjectFactory factory)
{
long mem = calculateMemoryUsage(factory);
System.out.println( factory.getClass().getName() + " produced "
+ factory.makeObject().getClass().getName() +
" which took " + mem + " bytes");
}
}
interface ObjectFactory
{
public Object makeObject();
}
public class Test
{
public static void main(String [] args)
{
MemoryTest mt = new MemoryTest();
mt.showMemoryUsage(new MyFactory());
}
}
class MyFactory implements ObjectFactory
{
private static class MyObject
{
boolean b;
}
public Object makeObject()
{
return new MyObject();
}
}
вверх^
к полной версии
понравилось!
в evernote