Как вы оптимизируете использование размера кучи приложения, в котором много (миллионов) долгоживущих объектов? (большой кеш, загружая множество записей из db)
- Использовать правильный тип данных
- Избегайте java.lang.String для представления других типов данных
- Избегайте дублирования объектов
- Использовать перечисления, если значения известны заранее
- Использовать пулы объектов
- String.intern() (хорошая идея?)
- Загрузка/сохранение только объектов, которые вам нужны.
Я ищу общее программирование или конкретные ответы Java. Нет фанкового компилятора.
Edit:
Оптимизируйте представление памяти POJO, которое может появляться миллионы раз в куче.
Использовать случаи
- Загрузите огромный файл csv в память (преобразованный в POJO)
- Используйте спящий режим для извлечения миллиона записей из базы данных.
Резюме ответов:
- Использовать мухи
- Копировать при записи
- Вместо того, чтобы загружать объекты 10M с тремя свойствами, эффективнее ли иметь 3 массива (или другую структуру данных) размером 10 М? (Может быть, боль для манипулирования данными, но если у вас очень мало памяти...)