如何解决OutOfMemoryError(Java):在r超出GC开销限制?

我必须读取文件夹列表中的文件并将数据保存在R.我使用以下代码来testing数据,它的工作原理。 当我使用实际数据的代码,然后我得到这个错误
错误:OutOfMemoryError(Java):超出GC开销限制调用自顶层

这是我为我的testing数据所做的

parent.folder <- "C:/Users/sandesh/Desktop/test_R" sub.folder <- list.dirs(parent.folder, recursive =TRUE)[-1] file <- file.path(sub.folder, "sandesh1.xlsx") library(xlsx) library(plyr) fun <- function(file) { df <- read.xlsx(file, sheetIndex=1) } df.big <- ldply(file, fun) 

这是rJava中的一个典型问题。 它在XLConnect文档中得到了回答,该文档也使用rJava以与xlsx库相同的方式进行连接。 我从这里引用:

“这是由于XLConnect(与xlsx相同)需要将整个数据对象复制到JVM以将其写入文件以及JVM必须使用固定的内存大小上限进行初始化而引起的。要改变这个数量,你可以通过rJava的选项支持,把parameter passing给R的JVM,就像你可以通过命令行Java过程一样:

 options(java.parameters = "- Xmx1024m") 

但是请注意,当初始化JVM时,这些参数在每个R会话中都会被精确评估一次 – 这通常是在您加载使用Java支持的第一个包之后,所以您应该尽早做到这一点。

正如上面提到的, 在加载任何库之前 ,在脚本开始处运行选项function,并且如果通过Rstudio运行它,请确保在运行脚本之前重新启动它。

另外,请注意,即使这样做仍然不能确定,这取决于您要parsing的文件的大小。