/ / XSSFWorkbook problém s pamäťou - java, Excel, pamäť, von

Problém s pamäťou XSSFWorkbook - java, excel, memory, out

Máme požiadavku, kde musíme získať súbor xlsx z databázy a pridať k nemu ďalšie 4 hárky.

Napísal som nasledujúci kód, aby som to dosiahol.

Kód:

OPCPackage opcPackage=OPCPackage.open(tempExcelFile);
XSSFWorkbook xworkbook=new XSSFWorkbook(opcPackage);
SXSSFWorkbook dbWorkBook = new SXSSFWorkbook(xworkbook, ApplicationConstants.FLUSH_LIMIT);
// add sheets to dbworkBook

Teraz je veľkosť súboru programu Excel v databáze približne 10 MB a na OOM sa zobrazuje výnimka OOM

XSSFWorkbook xworkbook=new XSSFWorkbook(opcPackage);

Moje nastavenia pamäte sú -Xms512m -Xmx1024m a nemôžem zmeniť toto číslo. Videl som nejaké riešenia, kde API udalostí bol požiadaný o použitie na vyriešenie problému s pamäťou

Moja otázka je, aj keď na čítanie riadkov používam api udalosti. Ako ich môžem zapísať späť do a SXSSFWorkbook objekt, aby som k nemu mohol pridať ďalšie 4 hárky.

odpovede:

0 pre odpoveď č. 1

Váš vlastný problém tu je, že stepráca s veľmi veľkými excelentnými dokumentmi s veľmi malým množstvom pamäte. Chvíľu som pracoval na analýze dokumentov xlsx a môžu analyzovať obrovské množstvo pamäte. Očakával by som, že súbor 10 MB xlsx bude vyžadovať niekde v balíku s pamäťou 1,5 - 2,5 GB, keď sa zabalí do pamäte.

Ste narazili na zásadný probléms formátom xlsx (ktorý, v prípade, že nevieš, je v podstate iba zväzkom dokumentov XML so zipsom). Pokiaľ nemáte veľa koncertov, ktoré by si mali zahrať, naozaj vám nemôžem odporučiť pokúsiť sa otvoriť xlsx. súbor> 2 MB.