Если вы уже знаете, сколько .png вы собираетесь загрузить, вы можете создать массив ImageIcon и загружать их по одному из каталога / каталогов (что позволит вам отобразить экран загрузки ...) ,
То, что я должен сделать , я думаю, это увеличение мин / макс. HeapSize JVM при запуске приложения. Вы можете указать их, например, добавление -Xmx256m в качестве параметра (это устанавливает максимальную кучу равной 256 МБ) (и, возможно, -Xms32m [это устанавливает минимальную кучу равной 32 МБ]), см. http://docs.sun.com/source/817-2180-10/pt_chap5.html#wp57033
Вы добавите эти параметры либо при запуске приложения (например, "java -jar myApp.jar -Xmx128m"), либо в файл jvm-конфигурации вашей системы, либо в свойства сборки вашего проекта.
Этот фрагмент кода будет загружать весь каталог; если вы хотите, чтобы загружалось только 50 изображений, просто поиграйте с параметрами start и stop.
Как уже было сказано, вам нужно установить максимальную кучу (-Xmx) примерно на 300 МБ (например, разрешение 1280x1024 -> 1310720px -> 4 байта / пиксель -> 5242880 байт -> 50 изображений -> 256 МБ).
File dir = new File("/path/to/directory");
File[] files = dir.listFiles();
BufferedImage[] images = new BufferedImage[files.length];
for (int i = 0; i < files.length; i++)
{
try
{
images[i] = ImageIO.read(files[i]);
} catch (IOException ex){}
}