Очень сильно проседаю по памяти при записи byte[] в XSSFWorkbook
пытаюсь прочитать xslx фаил и сделать в нём изменения. Подскажите пожалуйста, почему преобразование байтов в Workbook такое дорогое по памяти? почему то 9мб занимает 1.5г оперативы? Хотя если мы взяли 900к pojo объектов и начинаем их записывать в тот же самый формат экселя и далее сохраняю в фаил, то по памяти занимает 200-300мб, как так?) Что я не так делаю?
private SXSSFWorkbook convertToWorkbook(byte[] content) {
ByteArrayInputStream bin = new ByteArrayInputStream(content);
SXSSFWorkbook workbook = null;
try {
XSSFWorkbook wb = new XSSFWorkbook(bin);
bin.reset();
bin.close();
workbook = new SXSSFWorkbook(wb, 100, true, false);
} catch (IOException e) {
e.printStackTrace();
}
return workbook;
}
Ответы (1 шт):
Автор решения: Pavel Artem'yev
→ Ссылка
Используй вместо XSSFWorkbook - SXSSFWorkbook, это реализация на основе потоковой обработки, что не занимает таких ресурсов как обычный XSSFWorkbook.