Ошибка виртуальной машины Java XLConnect из-за нехватки памяти

Я знаю, что этот вопрос обсуждался несколько раз, но я не нашел решения своей проблемы:

Я резервирую 1024 МБ для виртуальной машины с

> параметры (java.parameters = "-Xmx1024m")
> библиотека (XLConnect)

xlcMemoryReport находит только около 15 МБ, а xlcFreeMemory не помогает (на самом деле иногда еще больше уменьшает доступную память)

> xlcMemoryReport()
Объем свободной памяти в виртуальной машине Java (JVM): 14,79472 МБ
> xlcFreeMemory()
> xlcMemoryReport()
Объем свободной памяти в Java Виртуальная машина (JVM): 15,05308 МБ

когда я пытаюсь загрузить файл размером 26 МБ, он терпит неудачу, но на самом деле освобождает память:

> res ‹- readWorksheet(loadWorkbook("bigFile.xlsx"),sheet=1)
ошибка при оценке аргумента "объект" при выборе метода для функции "readWorksheet": Ошибка: OutOfMemoryError (Java): куча Java пробел

> xlcMemoryReport()
Объем свободной памяти в виртуальной машине Java (JVM): 947,3003 МБ

> res ‹- readWorksheet(loadWorkbook("bigFile.xlsx"),sheet=1)
ошибка при оценке аргумента "объект" при выборе метода для функции "readWorksheet": Ошибка: OutOfMemoryError (Java): куча Java пробел

> xlcMemoryReport()
Объем свободной памяти в виртуальной машине Java (JVM): 936,7464 МБ.

  1. Почему xlcMemoryReport сначала не находит зарезервированную память, но находит ее после того, как я пытаюсь прочитать файл?
  2. Возможно ли, что> 900 МБ недостаточно для XLConnect для загрузки файла размером 26 МБ?
  3. Любая идея, как я могу сделать эту работу? (конечно, я мог бы использовать файлы CSV, но это неудобно для моих пользователей)

person polTo    schedule 03.03.2014    source источник
comment
Добро пожаловать в СО. Соединение между R и Excel с помощью JVM, кажется, занимает невероятный объем памяти. См. этот другой вопрос для некоторых советов. stackoverflow.com/questions/21937640/   -  person Richie Cotton    schedule 03.03.2014
comment
Спасибо! Еще раз внимательно перешел по ссылкам и нашел предложение по обходному пути (r.789695.n4.nabble.com/Problem-with-xlsx-package-td3298470.html): СОХРАНИТЬ КАК .xls.   -  person polTo    schedule 03.03.2014
comment
У меня несколько раз возникала проблема нехватки памяти, когда Ubuntu обновлял Java или обновлялся пакет rJava. Ваше решение options () сработало для меня, как и команда unlim -c без ограничений в оболочке. Но я закончил гоняться за этой проблемой. Я перешел на openxlsx, который избавляется от любой зависимости от Java и вместо этого полагается на C++. Я никогда не оглядывался назад.   -  person Brad Horn    schedule 08.09.2015