Добрый день!
Пытаюсь получить данные из XLS-файла вот таким образом:
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("test.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
// e.t.c
Размер загружаемого файла чуть больше пяти мегабайт. И на new HSSFWorkbook() получаю Exception in thread "main" java.lang.OutOfMemoryError: Java heap space. Если из xls поудалять листы, доведя до размера около трех метров, то файл загружается.
Что делать? Может где-то что-то в яве подкрутить можно, чтобы памяти побольше выделялось... Я новичок и не знаю всех нюансов.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Добрый день!
Обычно правильные мысли приходят после того, как задашь вопрос. Вот и здесь — прикинул где можно выставить размер памяти поболее и нашел java -Xmx. По умолчанию он выделяет 64Мб, я дал 100 — мало, 110 — хватило.
Возник такой вопрос — как рассчитать, сколько памяти надо отдавать, чтобы программа в ненужный момент не гикнулась? Отдавать заранее большое значение вроде -Xmx1024m? Какие здесь пожводные камни?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
T34 wrote:
> Добрый день!
>
> Обычно правильные мысли приходят после того, как задашь вопрос. Вот и здесь — прикинул где можно выставить размер памяти поболее и нашел java -Xmx. По умолчанию он выделяет 64Мб, я дал 100 — мало, 110 — хватило.
>
> Возник такой вопрос — как рассчитать, сколько памяти надо отдавать, чтобы программа в ненужный момент не гикнулась? Отдавать заранее большое значение вроде -Xmx1024m? Какие здесь пожводные камни?
Java машина не захватывает память сразу, -Xmx параметер определяет
сколько JVM может максимально попросить у ОС. Так что если ты поставишь
большое значение, то вроде бы все OK должно быть. Однако ставить его
больше размера свободной физической памяти не имеет смысла. Жуткие
тормоза начнутся.
Posted via RSDN NNTP Server 2.0 beta