Я понимаю, что означает ошибка, что моя программа потребляет слишком много памяти и в течение длительного периода времени она не восстанавливается.java.lang.OutOfMemoryError: превышение верхнего предела GC при загрузке файла xlsx
Моя программа просто читает файл 6,2Mb xlsx
при возникновении проблемы с памятью.
Когда я пытаюсь контролировать программу, она очень быстро достигает 1,2 ГБ в потреблении памяти, а затем она падает. Как он может достичь 1,2 ГБ при чтении 6,2 Мб файла?
Есть ли способ открыть файл в кусках? Так что его не нужно загружать в память? Или любое другое решение?
Именно эта деталь вызывает это. Но поскольку это библиотека, не следует ли ее каким-то образом обращаться с этим? Это всего 200 000 рядов с 3 колонками. В будущем мне нужно, чтобы он работал с ок. 1 мил записей и более столбцов ...
КОД:
Workbook myWorkBook;
Sheet mySheet;
if (filePath.contains(".xlsx")) {
// Finds the workbook instance for XLSX file
myWorkBook = new XSSFWorkbook(fis);
// Return first sheet from the XLSX workbook
mySheet = myWorkBook.getSheetAt(0);
myWorkBook.close(); // Should I close myWorkBook before I get data from it?
}
Сколько памяти вы даете программе? Сколько строк находится в файле Excel? Это ужасный формат, и даже фактическое приложение Excel просто задыхается, когда у вас достаточно строк. Библиотека не может перехитрить глупость формата файла. – Kayaman
Звучит как один огромный файл Excel. Не похоже, что вы загружаете 6,2 МБ текстовых данных. –
Это около 200 тыс. Строк, но мне нужно, чтобы он работал примерно с 1 мил. строки ... –