3

我正在使用 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。发生同样的错误。

让我知道您是否需要任何其他有用的信息!

4

1 回答 1

2

你应该看看

?xlcFreeMemory

?xlcMemoryReport

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

于 2013-11-06T13:58:52.053 回答