Я сомневаюсь, что вы хотите сделать это программно, если только вы не хотите сделать это один раз и сохранить его для будущего использования. Это дорогая вещь. В Java нет оператора sizeof (), и даже если бы он существовал, он бы считал только стоимость ссылок на другие объекты и размер примитивов.
Один из способов сделать это - сериализовать объект в файл и посмотреть на размер файла, например:
Serializable myObject;
ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("obj.ser"));
oos.write (myObject);
oos.close ();
Конечно, это предполагает, что каждый объект отличается от других и не содержит непереходных ссылок на что-либо еще.
Другая стратегия состояла бы в том, чтобы взять каждый объект и изучить его элементы путем отражения и сложить размеры (логическое значение & byte = 1 байт, короткий & char = 2 байта и т. Д.), Прокладывая путь вниз по иерархии членства. Но это утомительно и дорого и в итоге делает то же самое, что и стратегия сериализации.