Member 14078344 Ответов: 2

Как эффективно создать 1000 или более объектов в java и каковы будут накладные расходы на память?


я хочу создать большое количество объектов в java, чтобы накладные расходы на память были минимальными.

Что я уже пробовал:

я пробовал цикл for для создания объектов, но я хочу знать накладные расходы памяти, связанные с концепцией создания объектов в java

2 Ответов

Рейтинг:
2

CPallini

Цитата:
я хочу создать большое количество объектов в java, чтобы накладные расходы на память были минимальными.
Там нет "накладных расходов памяти", выделенная ей память необходима для создания объектов. Если вы хотите использовать меньше памяти, то сократите, если сможете, объем памяти, необходимый каждому объекту, до минимума (например, удалив избыточную информацию).

В качестве альтернативы, совершенно другого и интересного подхода, вы можете взглянуть на Flyweight pattern - Википедия[^].


Рейтинг:
1

Afzaal Ahmad Zeeshan

Это зависит от того, какой тип контейнера вы используете, простой массив Java, a List, или любой другой изготовленный на заказ контейнер. Каждый из этих контейнеров имеет нулевые, постоянные или несколько переменные накладные расходы для обслуживания других операций. Как будто ... List тип может хранить некоторое дополнительное пространство памяти, чтобы обеспечить более быструю вставку, в то время как массивы занимают O(N) пространства...

Цитата:
я хочу создать большое количество объектов в java, чтобы накладные расходы на память были минимальными
Я не уверен, что следую за вами в этом или нет, но каждый объект будет занимать свое собственное пространство в памяти, либо созданное с помощью цикла, вызовов функций, либо внутренне.

Объекты в Java-это ссылки на их экземпляры, создание массива из 1000 объектов не означает, что вы создаете 1000 объектов, вам придется это сделать new о них через некоторое время. Именно так работает система типов Java.
Цитата:
накладные расходы памяти, связанные с концепцией создания объектов в java
Как Java обрабатывает эту основу внутри JVM, в этом я не уверен, но у нее есть вызов функции, который создает сам объект, а также любые внутренние объекты или структуры. Это в основном рекурсивный вызов, любой накладные расходы связанные с ними в основном из—за внутреннего создания объектов, а также получения ссылок на переменные и их объекты-JVM realm.

И последнее, но не менее важное: не беспокойтесь о внутренних компонентах Java, если вам не нужно писать компилятор, в противном случае просто делайте все возможное на высоком уровне. Видеть здесь, Создание объектов (учебные пособия Java™ > изучение языка Java > классы и объекты)[^]