Существует ли стоимость объекта для создания экземпляра объекта в Java?
Я слышал от другого разработчика, что объект слишком дорогой для повторного создания экземпляра, потому что "у него есть множество методов".
Мое понимание (в основном из Блоха) заключалось в том, что создание объекта дорогостоящее, главным образом, через вещи, сделанные явно в конструкторе, особенно создание других дорогих объектов.
Существует ли стоимость каждого метода для нового объекта в Java? Я не думаю, но мне нужны ссылки, если у кого-то есть.
Спасибо!
Ответы
Ответ 1
Многие методы означают большую таблицу виртуального метода (VMT). Тем не менее, VMT для каждого класса, как и метаданные, и поэтому имеет только самую высокую цену при первом экземпляре. Последующие экземпляры выполняются так же быстро, как объекты с меньшим количеством методов, предполагая, что конструктор не выполняет тяжелый подъем.
Стоит прочитать также главу о создании объекта из книги настройки производительности.
Ответ 2
Нет, нет никакой связи между количеством методов в классе и временем, когда JVM выполняет операцию new
.
Серьезно, если вы думаете на таком уровне, вы не должны использовать такой язык, как Java, идите и напишите свое приложение на ассемблере или "C".
Истина заключается в том, что вам следует сосредоточиться на разработке ваших алгоритмов и структур данных, это будет иметь гораздо более глубокое влияние на производительность ваших приложений, чем любая потенциальная микро-оптимизация.
Ответ 3
В стороне, было бы небольшое поражение производительности для класса со многими переменными экземпляра (не уверен, что это действительно измеримо, хотя). Java требует, чтобы каждая переменная экземпляра была установлена в 0, false, null для каждого нового экземпляра, и есть стоимость выполнения, связанная с установкой их в ноль. Однако это, вероятно, всего лишь memset (или calloc или что-то в этом роде), который быстро завершается.
Ответ 4
Мне нужны ссылки, если у кого есть их.
Я предлагаю, чтобы другой разработчик попросил ссылки для поддержки его смехотворного требования.