Какие способы позволяют экономить память
-
Примитивные типы вместо объектов
ИспользуйintвместоInteger,doubleвместоDoubleи т.д., чтобы избежать накладных расходов на объекты. -
String Pool и
intern()
Строки из пула (String s = "text") не создают новых объектов. Методintern()добавляет строку в пул, если её там нет. -
Flyweight Pattern
Разделяй общие состояния объектов, чтобы уменьшить дублирование. Например, кэширование часто используемых объектов.
-
Использование
ArrayListвместоLinkedList
ArrayListэкономит память за счёт непрерывного хранения данных, в отличие отLinkedList, который хранит ссылки на узлы. -
Очистка ссылок и
WeakReference
Удаляй ненужные ссылки (list = null) и используйWeakReferenceдля кэшей, чтобы GC мог освободить память. -
Stream API и ленивые вычисления
Обрабатывай данные потоково, без загрузки всего набора в память.
Пример:
// Плохо: создаёт лишний объект
Integer sum = new Integer(10);
// Лучше: использует примитив
int sum = 10;
// Оптимизация строк
String s1 = "text"; // Использует пул
String s2 = new String("text").intern(); // Добавляет в пул
офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру