r-如何清除rJava使用的内存?

r-如何清除rJava使用的内存?,r,R,我正在使用xlsx软件包创建工作簿、工作表,将数据写入工作表,然后保存工作簿。但是,当我多次重复这组操作时,我会看到错误消息: >Error in .jcheck(silent = FALSE) : java.lang.OutOfMemoryError: GC overhead limit exceeded.jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, .jcast(if (inherits(o, "job

我正在使用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"
.jcheck中的错误(silent=FALSE): java.lang.OutOfMemoryError:GC开销超过了.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,jpc,use.true.class=true,evalString=simplify,evalArray=FALSE)在.jnew中出错(“java/io/FileOutputStream”,文件): jnew(“Java/io/FileOutputStream”,文件) >.jnew(“org/apache/poi/xssf/usermodel/xssf工作簿”)中出错: jnew(“org/apache/poi/xssf/usermodel/xssf工作簿”) .jcheck中出现错误(silent=FALSE):
Java Exception.jcall(wb,“Lorg/apache/poi/ss/usermodel/Sheet;”,“createSheet”,sheetName)我不知道如何在xlsx上实现它,事实上,由于这些问题,我不再使用它

我现在使用XLConnect,它有一个命令

xlcFreeMemory()
这么做

请注意,为了获得最佳结果,您需要在加载Java内存之前增加它,如下所示

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

祝你好运

借助上面的答案,注意你不需要
XLConnect
来实现
xlcFreeMemory
的效果……只需注意
xlcFreeMemory
实际做的是运行以下操作:

gc()
J("java.lang.Runtime")$getRuntime()$gc()
也就是说,它首先在R环境中运行
gc()
,然后在现有Java实例的环境中运行