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

时间:2013-11-06 12:28:41

标签: java r excel out-of-memory

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

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

错误消息是

Error: OutOfMemoryError (Java): Java heap space

出现在readWorksheetFromFile来电的第二次(相同)运行中。我试图通过重复运行this example的输入调用来生成MWE,但该错误似乎不能与该文件重现。

我使用的Excel文件有许多相互关联的工作表,大约3 MB。我正在阅读的表格也与其他表格相关联,但我已设置useCachedValues = TRUE

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

我知道扩展Java内存可能会解决这个问题,但这对我来说是一个笨拙的解决方案。我宁愿找到一种方法来从之前的调用中转储内存。

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

如果您有任何其他有用的信息,请告诉我们!

1 个答案:

答案 0 :(得分:2)

你应该看看

?xlcFreeMemory

?xlcMemoryReport

如果您正在进行多重运行并希望在两者之间进行清理,那么在XLConnect包文档中也会提到它。