Hallo
Ich habe schon vor einem halben Monat einmal etwas gefragt und die Antoworten habe ich großteils Umgesetzt.
Ich habe eine kleine DesignVerwaltung wo der Anwender sehr viele Bilder sehen möchte. Ich hatte das Problem das das Laden der Bilder immer zu lange dauerte.
Jetzt lasse ich einfach nur 30 Bilder laden und wenn er weiterscrollt oder umblättert werden immer nur sehr wenige Bilder hinzugeladen so das er immer die Bilder die er sieht geladen hatt und die anderen nicht.
Auch das Leistungsproblem habe ich jetzt unter Kontrolle.
Aber ich würde trotzdem gerne die Bilder in den cache Laden.
Ich habe alles mögliche probiert und ausgetestet aber nichts hat Funktioniert.
Es läuft alles super wenn ich nur mit 500 Bilder oder so teste aber wenn ich dan mit allen testen will dan bekomme ich immer einen Heap Space Error. Das Prgoramm darf 500 MB cache haben und ich brauche ungefähr 2k Bilder mit jeweils 30kb. Das wären ja eigentlich nur 60 MB da müsste ich noch reichlich Platz haben denn das Programm braucht selbst nur 200-300MB.
Aber wenn ich den Taskmanager beobachte dann sehe ich das es ca 550MB braucht wenn der Heap Spce Error kommt und den Error wirft das Programm beim Laden des 600. Bildes.
Mein letzter Code mit dem ich es Probiert habe:
Welche möglichkeit gibt es wie ich das machen könnte ?
Oder welche möglcihkeiten gibt es generell um in Java Objecte oder Files oder Images zu Cachen?
Lg Daniel
Ich habe schon vor einem halben Monat einmal etwas gefragt und die Antoworten habe ich großteils Umgesetzt.
Ich habe eine kleine DesignVerwaltung wo der Anwender sehr viele Bilder sehen möchte. Ich hatte das Problem das das Laden der Bilder immer zu lange dauerte.
Jetzt lasse ich einfach nur 30 Bilder laden und wenn er weiterscrollt oder umblättert werden immer nur sehr wenige Bilder hinzugeladen so das er immer die Bilder die er sieht geladen hatt und die anderen nicht.
Auch das Leistungsproblem habe ich jetzt unter Kontrolle.
Aber ich würde trotzdem gerne die Bilder in den cache Laden.
Ich habe alles mögliche probiert und ausgetestet aber nichts hat Funktioniert.
Es läuft alles super wenn ich nur mit 500 Bilder oder so teste aber wenn ich dan mit allen testen will dan bekomme ich immer einen Heap Space Error. Das Prgoramm darf 500 MB cache haben und ich brauche ungefähr 2k Bilder mit jeweils 30kb. Das wären ja eigentlich nur 60 MB da müsste ich noch reichlich Platz haben denn das Programm braucht selbst nur 200-300MB.
Aber wenn ich den Taskmanager beobachte dann sehe ich das es ca 550MB braucht wenn der Heap Spce Error kommt und den Error wirft das Programm beim Laden des 600. Bildes.
Mein letzter Code mit dem ich es Probiert habe:
Java:
public class ImageRegistry {
public HashMap<String, BufferedImage> registy = new HashMap<String, BufferedImage>();
static String[] fileName;
static File[] files;
public ImageRegistry(){
File dir = new File(*);
files = dir.listFiles();
fileName = new String[files.length];
for(int i = 0 ;i<files.length;i++){
fileName[i] = files[i].getName().replace(".png","");
loadImage(fileName[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(String Name) {
try {
File imgFl = new File(*);
if(imgFl.isFile() && !imgFl.isDirectory()){
BufferedImage img = ImageIO.read(imgFl);
registy.put(Name, img);
System.out.println("loaded " + Name);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Welche möglichkeit gibt es wie ich das machen könnte ?
Oder welche möglcihkeiten gibt es generell um in Java Objecte oder Files oder Images zu Cachen?
Lg Daniel