这是一个经常发生的现象。我尝试操纵某种大数据,例如
a <- matrix( rnorm( 1e4 * 200 ), ncol= 1e4 )
gr <- factor( rep( 1:2, each= 100 ) )
l <- lm( a ~ gr )
covs <- estVar( l )
cors <- cov2cor( covs )
经常会报告以下错误:错误:无法分配大小为 509.5 Mb 的向量
美好的。我删除了一些不再需要的变量并调用垃圾收集器:
rm( a, l )
gc( TRUE )
但是,错误仍然存在。现在我保存 R 并重新启动它。而且——奇迹发生了:内存现在可用。为什么?如果以前没有足够的内存供 R 分配,但现在有足够的,有什么变化?我可以强制 R 以某种方式清理而不将数据保存到磁盘并等待它再次加载它们吗?我不明白。
我的sessionInfo()
:
> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: i486-pc-linux-gnu (32-bit)
locale:
[1] LC_CTYPE=en_US.utf8 LC_NUMERIC=C LC_TIME=en_US.utf8 LC_COLLATE=en_US.utf8 LC_MONETARY=en_US.utf8
[6] LC_MESSAGES=en_US.utf8 LC_PAPER=C LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C
attached base packages:
[1] graphics utils datasets grDevices stats methods base
PS:据报道,系统似乎还有大量未使用的内存free
。top
报告说我的 R 进程(在错误之前)在我的 8 中使用了 ~ 2GB,而且还剩下很多。