【问题标题】:xlsx::loadWorkbook error in RR中的xlsx :: loadWorkbook错误
【发布时间】:2018-06-21 11:52:43
【问题描述】:

我有一个大小适中的.xlsx 文件,大小为 40,000 行和 15 列。我使用 xlsx::loadWorkbook 函数将该数据加载到 R Workspace 中。在加载该数据之前,我的 PC RAM 大小为 90 MB。加载该数据后,我的 PC RAM 大小为 650 MB。下面是我用来加载数据的代码。

library(xlsx)
file=\\file_path\\
wb <- xlsx::loadWorkbook(file)

然后我使用 rm(wb) 从 R 工作区中删除了 wb 对象。从 Workspace 中删除该文件后,我的 PC RAM 大小不会改变。它仍然与650MB 相同。我非常确定,我的工作区中没有任何其他对象。为什么会这样?以及我应该怎么做才能释放我的 PC RAM 大小?

【问题讨论】:

  • 你可能想看看这个关于内存管理的线程:stackoverflow.com/questions/15561331/release-memory-in-r
  • 为了更节省内存的数据导入方式,您可以先将数据导出到 csv。这速度更快,内存占用更少。
  • 我的目标是根据单元格的数量为单元格添加颜色。这就是我以工作簿格式加载它们的原因。

标签: r memory-management xlsx rjava xlconnect


【解决方案1】:

我自己做了一些探索。您可能想尝试以下方法

memory.size()
gc()
memory.size()
rm(list=ls())
memory.size()
gc()
memory.size()

函数memory.size() 报告当前正在使用的内存量。函数gc() 导致垃圾收集发生。之后,您可以再次使用memory.size() 查看已从垃圾收集中释放了多少内存。命令rm(list=ls()) 从全局环境中删除所有对象。之后,您可以使用memory.size() 查看删除全局环境中的所有对象后释放了多少内存。

此时,即使您已从全局环境中删除所有对象(您已描述过),也可能仍有更多内存在使用中。再做一次垃圾回收并检查内存。你的记忆应该已经下降(这是我发现的)。希望这会有所帮助!

【讨论】:

  • 我没有看到上述功能的显着改进。它只是减少了一位数(9 MB)的空间。
猜你喜欢
  • 1970-01-01
  • 2015-04-04
  • 2019-08-23
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多