【问题标题】:Read Excel files to R with XLConnect: run out of Java memory使用 XLConnect 将 Excel 文件读取到 R:Java 内存不足
【发布时间】: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 内存可能会解决这个问题,但我觉得这是一个笨拙的解决方案。我希望找到一种方法来转储以前调用的内存。

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

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

【问题讨论】:

标签: java r excel out-of-memory


【解决方案1】:

你应该看看

?xlcFreeMemory

?xlcMemoryReport

如果您要进行多次运行并希望在其间进行清理,则 XLConnect 包文档中也提到了这一点。

【讨论】:

  • 太好了,谢谢。我已经将readWorksheetFromFile 包装在一个便利函数中,这似乎缓解了这个问题(只要包装函数存在且没有错误)。但是您建议的事情似乎为根本问题提供了解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 2023-04-09
  • 2013-09-12
  • 2012-11-05
  • 2020-05-28
  • 1970-01-01
相关资源
最近更新 更多