Подтвердить что ты не робот

R - Как очистить память, используемую rJava?

Я использую пакет xlsx для создания рабочей книги, рабочего листа, записи данных на листе и сохранения книги. Однако, когда я повторяю этот набор действий несколько раз, я начинаю сообщение об ошибке:

>Error in .jcheck(silent = FALSE) : 
  java.lang.OutOfMemoryError: GC overhead limit exceeded.jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, .jcast(if (inherits(o, "jobjRef") || inherits(o, "jarrayRef")) o else cl, "java/lang/Object"), .jnew("java/lang/String", method), j_p, j_pc, use.true.class = TRUE, evalString = simplify, evalArray = FALSE)<S4 object of class "jobjRef"

>Error in .jnew("java/io/FileOutputStream", file) : 
  Java Exception <no description because toString() failed>.jnew("java/io/FileOutputStream", file)<S4 object of class "jobjRef">

>Error in .jnew("org/apache/poi/xssf/usermodel/XSSFWorkbook") : 
  Java Exception <no description because toString() failed>.jnew("org/apache/poi/xssf/usermodel/XSSFWorkbook")<S4 object of class "jobjRef">

Error in .jcheck(silent = FALSE) : 
  Java Exception <no description because toString() failed>.jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet", sheetName)<S4 object of class "jobjRef"

Я предполагаю, что это потому, что повторение действий потребляет память Java.

Мой вопрос в том, как я могу очистить/повторно инициализировать память, чтобы повторять эти действия снова без ошибок в памяти?

Есть ли какой-нибудь простой код в r, который может это сделать?

Большое спасибо за ваш совет!

4b9b3361

Ответ 1

Я не знаю, как это сделать на xlsx, на самом деле я больше не использую его из-за этих проблем.

Теперь я использую XLConnect, и у него есть команда

xlcFreeMemory()

сделать только это

Обратите внимание, что для достижения наилучших результатов вам необходимо увеличить память Java, прежде чем загружать его, как показано ниже.

options( java.parameters = "-Xmx4g" )
library(XLConnect)

Удачи.