我正在使用XLConnect将Excel工作表读入R。效果很好。但是,如果我重新运行该命令(例如,在更改Excel文件中的值之后),该函数将耗尽内存。
我正在读取的文件/工作表具有18列和363行数字数据。
错误消息是
Error: OutOfMemoryError (Java): Java heap space
出现在readWorksheetFromFile
通话的第二次(相同)运行中。我试图通过重复运行此示例中的输入调用来产生MWE ,但该文件似乎无法再现该错误。
我使用的Excel文件有很多相互连接的工作表,大约3 MB。我正在阅读的工作表也已链接到其他人,但是我已经设置好了useCachedValues = TRUE
。
在我看来,在执行第一个调用之后,Java内存没有被清除。然后,第二个调用尝试将更多数据填充到内存中,从而导致调用失败。是否可以在Java内存上强制进行垃圾回收?当前,唯一的解决方案是重新启动R会话,这对我的客户不切实际。
我知道扩展Java内存可能会解决此问题,但这使我感到笨拙。我希望找到一种方法来转储先前调用中的内存。
我已经使用了更详细的还试图loadWorkbook
和readWorksheet
功能。发生相同的错误。
让我知道您是否需要其他有用的信息!
你应该看看
?xlcFreeMemory
和
?xlcMemoryReport
如果您进行多次运行并希望在两次运行之间进行清理,则XLConnect软件包docu中也提到了这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句