Mam problem z ładowaniem obrazów do mojej aplikacji. Próbuję utworzyć prostą przeglądarkę obrazów. Po lewej mam listę folderów. Po kliknięciu nazwy folderu na liście obrazy powinny pojawić się po prawej stronie (okienko przepływu). Każdy obraz jest w HBox z ramką. Ale ja dostaję błąd tak szybko:JavaFX - Ładowanie zdjęć i problemów z pamięcią
java.lang.outofmemoryerror java heap space
Spojrzałem na menedżera zadań - gdybym załadować tylko 6 zdjęć aplikacja zajmuje 500MB pamięci! I jeszcze jedno - jeśli zmienię folder na liście, pamięć pozostanie zajęta. Przy wyborze innego folderu Tworzę nową flowPane
flowPane = new FlowPane();
Więc stary ze wszystkimi ImageViews powinny być usunięte przez śmieciarza, prawda?
Jak skutecznie zarządzać obrazami w mojej aplikacji?
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);
}
Mam ten sam problem :( – Xdg