Я измеряю размеры объектов, проверяя, как долго их байтовые массивы используют ByteArrayOutputStream. При выполнении:
System.out.println(Utils.getObjectSize(new Integer(123123)));
System.out.println(Utils.getObjectSize(new Point(123, 123)));
Они возвращают 81 и 51.
Я верю, что точка состоит из двух примитивов, но это, по-видимому, не является причиной.
Код я для Utils.getObjectSize:
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
ObjectOutputStream objectStream = new ObjectOutputStream(byteStream);
objectStream.writeObject(object);
objectStream.close();
return byteStream.toByteArray().length;
EDIT:
Я выразил себя не так. Я действительно хотел знать, почему они берут больше размера в потоке.