Ja mit
[code=Java]image.flush;[/code]
mache ich es zurzeit auch aber ich möchte alle Bilder im cache haben damit ich sie viel schneller Laden kann als immer wieder wenn ich sie brauche aus dem Verzeichniss herausladen zu müssen.
Und ja das war einwenig kompliziert wie ich es umgesetzt habe aber wie gesagt ich bin noch ein Anfänger.
Das File Array beinhaltet nur die Liste der Files welche nicht serh groß ist da diese Liste nicht die Files in das Programm läd sondern nur weiß welche files es gibt.
Habe es abgeändert und ich bekomme an der gleichen stelle wieder den Heap Space Error.
Abgeändert:
[code=Java]public class ImageRegistry {
public HashMap<String, BufferedImage> registy = new HashMap<String, BufferedImage>(1000);
static File[] files;
public ImageRegistry(){
File dir = new File("C:/PPCDVImage/");
files = dir.listFiles();
for(int i = 0 ;i<files.length;i++){
loadImage(files[i]);
}
}
public BufferedImage getImage(String Name)
{
try{
BufferedImage image = registy.get(Name);
if(image==null){
image = registy.get("noPhoto");
}
return image;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
public void loadImage(File imgFl) {
try {
BufferedImage img = ImageIO.read(imgFl);
registy.put(imgFl.getName(), img);
System.out.println("loaded " + imgFl.getName());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}[/code]