1

При обработке листа ODS с API JOpenDoc, получая OutOfMemoryError для пространства кучи java. Лист обработки содержит 6000 записей. Согласно JProfiler, потребление памяти становится больше, если записи больше. Как избавиться от этой ошибки, не увеличивая размер JVM с аргументами -X. Вот мой код Java, который вызывает outofmemory.Как преодолеть OutOfMemoryError для пространства кучи java?

SpreadSheet spreadSheet=SpreadSheet.createFromFile(new File("document.ods")); //memory-35 MB 
Sheet sheet1=spreadSheet.getSheet(1); // consumed memory - 47 MB 
Sheet sheet2=spreadSheet.getSheet(2); // consumed memory - 59 MB 
Sheet sheet3=spreadSheet.getSheet(3); // outofmemory error since the default size is 64 MB 
+0

Есть ли причина избежать использования флагов -X? – Jason

+3

Ум, перестань использовать всю память? Если вы откажетесь увеличить память, доступную JVM, к чему-то, что вам нравится, это ваш другой вариант. Только иметь дело с одним «Листом» за раз. –

+0

@ Джейсон: Да, поскольку листы могут увеличиваться постепенно. в этом случае фиксированная память кучи не назначается. Как я сказал вам, что память кучи увеличивается, если количество записей больше. – hemanth

ответ

2

Необходимо увеличить память с помощью -Xmx или уменьшить использование памяти. Например, вам нужно загрузить сразу все 3 листа? Если нет, отпустите ссылку на нее (например, sheet1 = null), и сборщик мусора позаботится об этом.