Оптимизация памяти Java для работы с изображениями?
У меня есть программа которая загружает в java 500 картинок и отображает. Весит все это 1500 мб в памяти. Я сделал так чтобы загружались не полное изображение а с 190x80 разрешение изображения. Вес снизился до 800 мб. Сборщик муссора каждую секунду тылдычит System.gc(). Вопрос: Нельзя ничего сделать больше?
вы уверены что вам нужно 500 картинок единоверменно ?
на какой экран это все поместится ?
подтягивайте тольок те картинки которые нужны вам прямо сейчас.
если вам не нужно их показывать а просто как то обработать обрабатывайте по очереди, все равно не держите все в памяти.
Sirikid: согласен, совсем не нужно тут грузить 500 картинок одновременно, нужно писать свой JScrollPane c шахматами и поэтессами, а также использовать offheap хранилище для картинок, если их уж так много, можно взять за основу реализацию direct buffer'a netty.
Rienopely: грузите их асинхронно, когда они видны, давно не писал для детскопа, для android есть picaso и аналоги, уверен для детскопа есть что то подобное, в крайне случае можно запилить самому под конкретную задачу.
Ленивая загрузка решит Ваши проблемы. 500 картинок крутить в памяти это моветон, что-то не так с дизайном вашей программы. Если речь идет об отображении, то как минимум я бы сделал постраничный вывод, или ленивую подгрузку (и выгрузку) при скроле.