【发布时间】:2013-11-06 12:28:40
【问题描述】:
我正在使用 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 内存可能会解决这个问题,但我觉得这是一个笨拙的解决方案。我希望找到一种方法来转储以前调用的内存。
我也尝试过使用更详细的 loadWorkbook 和 readWorksheet 函数。发生同样的错误。
如果您需要任何其他有用的信息,请告诉我!
【问题讨论】:
标签: java r excel out-of-memory