Там нет двойных накладных расходов.
Java возьмет класс, суперклассы, вычислит пространство, необходимое для всех полей, и выделит пространство, необходимое для одного экземпляра.
Создайте только точку памяти, вообще не существует понятия суперкласса, есть экземпляр Foo, который нуждается в памяти только для одного int, а экземпляры Bar нуждаются в памяти для двух ints, из которых один есть, потому что Бар, оказывается, расширяет Foo.
Так что накладные расходы (или ведение бухгалтерского учета или все, что вы хотите вызвать) происходит только один раз.
Однако при разработке в java обычно лучше не заботиться о материалах памяти слишком много, если у вас нет очень специфических (и я имею в виду очень очень специфических) случаев использования, при которых накладные расходы на книгу вызывают серьезные проблемы. В этом случае необходимо учитывать также 8-байтовое дополнение.
Как правило, есть много других способов улучшить объем памяти вашего приложения или его общую производительность, чем не беспокоиться об издержках памяти каждого отдельного экземпляра.
Существует только один заголовок и только один объект. Поля Bar находятся сразу после полей из Foo в памяти. –