2

我知道有很多关于 R 的内存问题,但为什么它有时可以为对象找到空间,但有时却不能。例如,我在 Linux 上运行 64 位 R,在具有 15gb 内存的交互式节点上。我的工作区几乎是空的:

 dat <- lsos()
 dat$PrettySize
[1] "87.5 Kb"  "61.8 Kb"  "18.4 Kb"  "9.1 Kb"   "1.8 Kb"   "1.4 Kb"   "48 bytes"

在 CD 之后第一次加载 R 到所需的目录时,我可以很好地加载 Rdata。但是有时我需要重新加载它并且我得到通常的:

> load("PATH/matrix.RData")
Error: cannot allocate vector of size 2.9 Gb

如果我可以加载一次,并且有足够的空间(我假设是连续的),那么发生了什么?我错过了一些明显的东西吗?

4

1 回答 1

1

基本答案是内存分配函数需要找到连续的内存来构造对象(永久和临时),而其他进程(R-process 或其他)可能已经对可用空间进行了碎片化。在加载过程完成之前,R 不会删除正在被覆盖的对象,因此即使您认为您可能将新数据放在旧数据之上,但事实并非如此。

于 2013-09-06T16:15:17.700 回答