Ho un problema con il caricamento delle immagini nella mia applicazione. Sto cercando di creare un semplice browser di immagini. A sinistra ho una lista di cartelle. Dopo aver fatto clic sul nome della cartella nell'elenco, le immagini dovrebbero apparire a destra (riquadro del flusso). Ogni immagine è in un HBox con un bordo. Ma sto errore come questo in fretta:JavaFX - Caricamento immagini e problemi di memoria
java.lang.outofmemoryerror java heap space
ho guardato il task manager - se carico solo 6 foto l'applicazione prende 500MB di memoria! E un'altra cosa: se cambio cartella nella lista la memoria rimane occupata. Mentre la scelta di un'altra cartella sto creando nuova flowPane
flowPane = new FlowPane();
Così il vecchio con tutte le ImageViews deve essere eliminato dal garbage collector, giusto?
Come posso gestire le immagini nella mia app in modo efficace?
for(int i = 0 ; i < zdjecia.length; i++){
ImageView iv2 = new ImageView();
Image image = new Image("file:"+zdjecia[i].getAbsolutePath());
iv2.setImage(image);
if(image.getHeight() > image.getWidth()){
iv2.fitHeightProperty().bind(szerokoscZdjecia.multiply(0.8).subtract(6));
}else
iv2.fitWidthProperty().bind(szerokoscZdjecia.subtract(6));
iv2.setPreserveRatio(true);
iv2.setSmooth(true);
iv2.setCache(false);
String styl = "-fx-border-color: #b2b3b3;"
+ "-fx-border-width: 2;";
HBox boxNaFotke = new HBox();
boxNaFotke.prefWidthProperty().bind(szerokoscZdjecia);
boxNaFotke.prefHeightProperty().bind(szerokoscZdjecia.multiply(0.8));
boxNaFotke.setAlignment(Pos.CENTER);
boxNaFotke.setStyle(styl);
boxNaFotke.getChildren().add(iv2);
fotki.add(boxNaFotke);
flowPane.getChildren().add(boxNaFotke);
}
Ho un stesso problema :( – Xdg