Как исправить пространство кучи Java из памяти при использовании многих последовательных изображений - PullRequest
0 голосов
/ 28 апреля 2019

Попытка выполнить некоторые печати с использованием JasperReport.

JasperReport предоставляет функцию для печати документа в BufferedImage, который я преобразую в WritableImage для отображения его на объекте ImageView (как показано в коде ниже).

К тому времени я получаю исключение пространства кучи Java из памяти в функции getImage (int pageNumber).Я предполагаю, что старые ссылки на изображения не освобождаются.

Можно ли это исправить?

private void viewPage(int pageNumber) throws JRException {
    this.resultViewer.setFitHeight(this.imageHeight * this.zoomFactor);
    this.resultViewer.setFitWidth(this.imageWidth * this.zoomFactor);
    this.resultViewer.setImage(this.getImage(pageNumber));
}

@FXML
private ImageView resultViewer;

private WritableImage getImage(int pageNumber) throws JRException {
    return SwingFXUtils
            .toFXImage((BufferedImage) JasperPrintManager.printPageToImage(this.jasperPrint, pageNumber, 2), null);
}

1 Ответ

0 голосов
/ 03 мая 2019

Я исправил проблему, вызвав функцию flush () для последнего отображаемого BufferedImage перед отображением следующего

...