Błąd podczas odczytywania dużych plików Excel (xlsx) Przez POI Apache

Próbuję odczytać duże pliki Excela xlsx za pośrednictwem Apache POI, powiedzmy 40-50 MB. Wychodzę z wyjątku pamięci. Aktualna pamięć sterty to 3 GB.

Mogę czytać mniejsze pliki Excela bez żadnych problemów. Potrzebuję sposobu, aby odczytać duże pliki Excela, a następnie je z powrotem jako odpowiedź za pośrednictwem Spring excel view.

public class FetchExcel extends AbstractView {


    @Override
    protected void renderMergedOutputModel(
            Map model, HttpServletRequest request, HttpServletResponse response) 
    throws Exception {

    String fileName = "SomeExcel.xlsx";

    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

    OPCPackage pkg = OPCPackage.open("/someDir/SomeExcel.xlsx");

    XSSFWorkbook workbook = new XSSFWorkbook(pkg);

    ServletOutputStream respOut = response.getOutputStream();

    pkg.close();
    workbook.write(respOut);
    respOut.flush();

    workbook = null;                    

    response.setHeader("Content-disposition", "attachment;filename=\"" +fileName+ "\"");


    }    

}

Najpierw zacząłem używaćXSSFWorkbook workbook = new XSSFWorkbook(FileInputStream in); ale to było kosztowne dla API Apache POI, więc przełączyłem się na pakiet OPC, ale ten sam efekt. Nie muszę parsować ani przetwarzać pliku, wystarczy go przeczytać i zwrócić.

questionAnswers(4)

yourAnswerToTheQuestion