Tôi gặp sự cố khi tải hình ảnh vào ứng dụng của mình. Tôi đang cố gắng tạo một trình duyệt hình ảnh đơn giản. Ở bên trái tôi có một danh sách các thư mục. Sau khi nhấp vào tên của thư mục trên danh sách hình ảnh sẽ xuất hiện ở bên phải (cửa sổ dòng). Mỗi hình ảnh nằm trong một HBox với một đường viền. Nhưng tôi nhận được lỗi như nhanh chóng này:JavaFX - Đang tải hình ảnh và sự cố bộ nhớ
java.lang.outofmemoryerror java heap space
Tôi nhìn vào công việc quản lý - nếu tôi tải chỉ có 6 hình ảnh ứng dụng có 500MB bộ nhớ! Và một điều nữa - nếu tôi thay đổi thư mục trong danh sách, bộ nhớ vẫn được giữ lại. Trong khi lựa chọn một thư mục khác tôi là tạo ra flowPane mới
flowPane = new FlowPane();
Vì vậy, cái cũ với tất cả các ImageViews nên được xóa bởi các bộ thu rác, phải không?
Tôi làm cách nào để quản lý hình ảnh trong ứng dụng của mình một cách hiệu quả?
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);
}
Tôi có một vấn đề tương tự :( – Xdg