【发布时间】:2019-09-21 14:00:43
【问题描述】:
正如标题所示,我正在尝试全面了解 R 的内存限制,因为我有一个规模迅速增长的项目,我担心内存限制很快会成为一个主要问题。
我知道object.size,当在我的环境中最大的项目上运行时,我得到以下输出:
> object.size(raw.pbp.data)
457552240 bytes
...所以最大的项目是 ~457MB。我还检查了我的 macbook pro 的内存,在 About This Mac --> Storage 中,它显示我的内存为8 GB 1600 MHz DDR3,所以我假设我有 8 GB 可以使用。
显然 457MB 数据帧不是我的 R 环境中唯一的对象,但我不想为每个对象手动运行 object.size 并将字节相加以找到所用内存的总大小。有一个更好的方法吗?告诉我 RStudio 环境中所有对象总共使用的内存的函数会很棒。有这样的功能吗?
另外,当我接近 8GB 时会发生什么 - 我的 R 脚本会停止工作吗?我预计我的数据在不久的将来会增加 5 到 10 倍,这可能会使环境中使用的总内存接近甚至超过 8GB。
最后,如果达到 8GB 内存会使我的 R 脚本无法运行,我有什么选择?如果我将我的数据框转换为数据表,是否会减小整个对象的大小?
非常感谢任何帮助,谢谢!
编辑:保存为.rda 文件,raw.pbp.data 只有 32MB,所以我乐观地认为,当加载到 R 中时,有一种方法可以减小其大小。
【问题讨论】:
-
我认为
pryr::mem_used()给出了总内存使用量。 -
这篇帖子有很多很棒的反馈,谢谢大家
-
请注意,将 object.size 值相加并从物理内存中获取差异可能是不够的。 R 要求新对象驻留在连续的内存块中。
标签: r memory memory-management