Ошибка пространства кучи Java в R 32 бит

Я столкнулся с ошибкой в ​​​​R при попытке использовать функцию read.xlsx из пакета xlsx. Ошибка говорит "

Ошибка в .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,: java.lang.OutOfMemoryError: пространство кучи Java

Я пытался использовать пакет openxlsx, и он отлично работает, но я хочу использовать только пакет xlsx. Я также попытался установить параметры java для увеличения пространства кучи после выгрузки всех пакетов из сеанса R, но это не работает. Я использую 32-битную R, 32-битную Java в 64-битной системе и объявил все возможные пути в моих переменных среды.

Большое спасибо за помощь!


person Prasoon Puri    schedule 23.09.2015    source источник
comment
Именно из-за этой проблемы я отказался от пакета xlsx и перешел на readxl, который быстрее. Я потратил больше года, пытаясь решить эту проблему. Самое близкое, что я мог сделать, это убедиться, что я запускал gc() после каждого звонка read.xlsx. Довольно раздражает.   -  person MichaelChirico    schedule 25.02.2016


Ответы (1)


У меня как-то была эта проблема невоспроизводимым образом, частично решил ее с помощью -Xmx8g, но случайно столкнулся с проблемами.

Я описал вариант с другим сборщиком мусора здесь с помощью

options(java.parameters = c("-XX:+UseConcMarkSweepGC", "-Xmx8192m"))
library(xlsx)

в начале скрипта и перед загрузкой любого другого пакета, поскольку другие пакеты могут загружать некоторые компоненты Java сами по себе, и параметры должны быть установлены до загрузки любого Java.

Пока проблема больше не повторялась.

Только иногда в длительной сессии это все же может случиться. Но в этом случае перезапуск сеанса обычно решает проблему.

person drmariod    schedule 20.08.2020