Я создал приложение для просмотра изображений, используя javafx.Я хочу отобразить все изображения в папке в виде миниатюр.
java.lang.OutOfMemoryError: Ошибка кучи Java
Ошибка при использовании приведенного ниже кода.Я также использовал System.gc()
, но без улучшения.
GridPane thumbnails=new GridPane();
for (int row = 0; row < 1; row++) {
for (int column = 0; column <= jFiles.size(); column++) {
int newindex = column;
String currentBackImage = FileHandler.CURRENT_DIR + "/" + jFiles.get(column).fullname;
FileInputStream imageInput = new FileInputStream(new File(FileHandler.CURRENT_DIR + "/" + jFiles.get(column).fullname));
String ext = currentBackImage.toLowerCase().substring(currentBackImage.lastIndexOf('.') + 1);
if (ext.contains("tif")) {
FileChannel channel = imageInput.getChannel();
ByteBuffer buffer = ByteBuffer.allocate((int) channel.size());
channel.read(buffer);
System.gc();
img = mainController.load(buffer.array());
imageInput.close();
} else {
System.gc();
img = new Image(imageInput);
imageInput.close();
}
StackPane stack = new StackPane();
ImageView view = new ImageView();
view.setImage(img);
stack.add(view);
thumbnails.add(stack, row, column);
imageInput.close();
}
}