Как стать автором
Обновить

Сравнение потребления памяти у разных структур хранения данных

Время на прочтение 2 мин
Количество просмотров 25K
Автор оригинала: Peter Lawrey
Различные структуры в Java потребляют разное количество памяти. Поэтому для нас очень важен выбор наиболее эффективного метода хранения данных.

Какая будет разница по потреблению памяти между конструкциями `new int[1024]` и `new Integer[1024]`?

int[] ints = new int[1024];
for (int i = 0; i < ints.length; i++) ints[i] = i;

Integer[] ints = new Integer[1024];
for (int i = 0; i < ints.length; i++) ints[i] = i;


Примечание: 1/8 часть значений типа Integer будут закешированы и не скушают лишнюю память. Все значения типов Boolean и Byte тоже будут закешированы.

Структура JVM 32-bit(размер в байтах) JVM 64-bit(размер в байтах)
new BitSet(1024) 168 168
new boolean[1024] 1040 1040
new Boolean[1024] 4112 4112
new ArrayList<Boolean>(1024) 4136 4136
new LinkedList<Boolean>() with 1024 24624 24624
new byte[1024] 1040 1040
new Byte[1024] 4112 4112
new ArrayList<Byte>(1024) 4136 4136
new LinkedList<Byte>() with 1024 24624 24624
new char[1024] 2064 2064
new Character[1024] 18448 18448
new short[1024] 2064 2064
new Short[1024] 18448 18448
new ArrayList<Character/Short>(1024) 18472 18472
new LinkedList<Character/Short>() with 1024 38960 38960
new int[1024] 4112 4112
new Integer[1024] 18448 18448
new float[1024] 4112 4112
new Float[1024] 20496 20496
new ArrayList<Integer/Float>(1024) 18472 18472
new LinkedList<Integer/Float>() with 1024 38960 38960
new long[1024] 8208 8208
new Long[1024] 18448 25616
new double[1024] 8208 8208
new Double[1024] 20496 28688
new ArrayList<Long/Double>(1024) 18472 25640
new LinkedList<Long/Double>() with 1024 38960 46128
new String[1024] 52464 61456
new ArrayList<String>(1024) 52488 61480
new LinkedList<String>() with 1024 72976 81968


Полный код доступен здесь

З.Ы. Предположительно все это должен знать любой JAVA разработчик, но если кто-то не знает, то улыбаемся и машем читаем и запоминаем :)
Теги:
Хабы:
+32
Комментарии 43
Комментарии Комментарии 43

Публикации

Истории

Работа

Java разработчик
359 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн