Witam!
Mam za zadanie napisanie programu do przegladania grafiki.
Mam już zrobione drzewko katalogów itp, ale mam problem z generowaniem miniatur, a dokładniej z generowaniem większej ilości miniatur, gdy jest ich mało (np 10) to jest wszystko ok.
Problem pojawia się gdy jest ich około 50-100. Pojawiają się wtedy komunikat, a braku pamięci.

Poniżej przedstawiam fragment kodu odpowiedzialnego, za generownie mniatur.


 
public void Obrazek(String dir)
{
	Filtr filtr = new Filtr(null);
	File katalog = new File(dir);
	 File pliki[] = katalog.listFiles(filtr);
	
	if (pliki==null) return;
	
	listaPlikow = new JPanel();
	   pasek2.setViewportView(listaPlikow);
	   
	   listaPlikow.setLocation(0,0);
	   
	   listaPlikow.setLayout(new GridLayout(50,5));
                 this.pulaWatkow.shutdown();
                 this.pulaWatkow = Executors.newFixedThreadPool(2);
		System.runFinalization();
		System.gc();
	 for(File plik : pliki)
	 {
		 Miniaturka aa = new Miniaturka(plik.getPath());
		 this.pulaWatkow.submit(aa);
		 try {
			Thread.sleep(10);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


public class Miniaturka implements Runnable{
private String plik;
	public Miniaturka(String plik)
	 {
		 this.plik =plik;
		 }
		
	@Override
	public void run() {
		JCheckBox lista = new JCheckBox();
	    Podglad pdg = new Podglad(plik);
	    lista.addMouseListener(pdg);
		try {
			image = ImageIO.read(new File(plik));
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println(e.toString() + plik);
		}
	  ImageIcon ikona = new ImageIcon(image.getScaledInstance(80,80,Image.SCALE_DEFAULT));
	  listaPlikow.add(lista);
	  lista.setIcon(ikona);
	}
}

Proszę Was o jakąś poradę, jak zlikwidować ten problem