Существует ли стоимость объекта для создания экземпляра объекта в Java?

Я слышал от другого разработчика, что объект слишком дорогой для повторного создания экземпляра, потому что "у него есть множество методов".

Мое понимание (в основном из Блоха) заключалось в том, что создание объекта дорогостоящее, главным образом, через вещи, сделанные явно в конструкторе, особенно создание других дорогих объектов.

Существует ли стоимость каждого метода для нового объекта в Java? Я не думаю, но мне нужны ссылки, если у кого-то есть.

Спасибо!

Ответ 1

Многие методы означают большую таблицу виртуального метода (VMT). Тем не менее, VMT для каждого класса, как и метаданные, и поэтому имеет только самую высокую цену при первом экземпляре. Последующие экземпляры выполняются так же быстро, как объекты с меньшим количеством методов, предполагая, что конструктор не выполняет тяжелый подъем.

Стоит прочитать также главу о создании объекта из книги настройки производительности.

Ответ 2

Нет, нет никакой связи между количеством методов в классе и временем, когда JVM выполняет операцию new.

Серьезно, если вы думаете на таком уровне, вы не должны использовать такой язык, как Java, идите и напишите свое приложение на ассемблере или "C".

Истина заключается в том, что вам следует сосредоточиться на разработке ваших алгоритмов и структур данных, это будет иметь гораздо более глубокое влияние на производительность ваших приложений, чем любая потенциальная микро-оптимизация.

Ответ 3

В стороне, было бы небольшое поражение производительности для класса со многими переменными экземпляра (не уверен, что это действительно измеримо, хотя). Java требует, чтобы каждая переменная экземпляра была установлена ​​в 0, false, null для каждого нового экземпляра, и есть стоимость выполнения, связанная с установкой их в ноль. Однако это, вероятно, всего лишь memset (или calloc или что-то в этом роде), который быстро завершается.

Ответ 4

Мне нужны ссылки, если у кого есть их.

Я предлагаю, чтобы другой разработчик попросил ссылки для поддержки его смехотворного требования.