我知道有很多关于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加载到所需的目录后,我可以加载一个Rdata罚款。 BUt然后有时我需要重新加载它我得到通常:
> load("PATH/matrix.RData")
Error: cannot allocate vector of size 2.9 Gb
如果我可以加载一次,并且有足够的(我假设是连续的)房间,那么发生了什么?我错过了一些明显的东西吗
答案 0 :(得分:1)
基本答案是内存分配函数需要找到用于构造对象(永久和临时)的连续内存,而其他进程(R进程或其他进程)可能已经分割了可用空间。在加载过程完成之前,R不会删除被覆盖的对象,因此即使您认为可能在旧数据之上放置新数据,也不是。