使用XLConnect将Excel文件读取到R:用完Java内存

我正在用XLConnect将一个Excel工作表读入R中。 它工作得很好。 但是,如果我重新运行该命令(例如,在Excel文件中更改值之后),该function将耗尽内存。

我正在阅读的文件/表有18列和363行的数字数据。

错误消息是

Error: OutOfMemoryError (Java): Java heap space 

它出现在readWorksheetFromFile调用的第二个(相同的)运行中。 我试图通过反复运行这个例子中的input调用来产生一个MWE,但是这个错误似乎没有被该文件重现。

我使用的Excel文件有许多相互连接的工作表,大约3 MB。 我正在阅读的表也链接到其他人,但我已经设置useCachedValues = TRUE

在我看来,执行第一次调用后,Java内存不会被清除。 第二个调用然后尝试将更多的数据填充到内存中,这导致调用失败。 是否有可能在Java内存上强制垃圾收集? 目前,唯一的解决scheme是重新启动R会话,这对我的客户是不实际的。

我知道扩展Java内存可能会解决这个问题,但是这让我觉得这是一个笨拙的解决scheme。 我宁愿find一种方法来转储以前的调用内存。

我也尝试使用更详细的loadWorkbookreadWorksheet函数。 发生同样的错误。

让我知道,如果有任何其他有用的信息,您可能需要!

你应该看看

 ?xlcFreeMemory 

 ?xlcMemoryReport 

这也是在XLConnect软件包中提到的,如果你正在进行multipe运行并且想在两者之间进行清理。