我有时会处理很多对象,由于块之间的内存问题,重新开始会很好。考虑以下示例:
警告:我有 8GB 的 RAM。如果你没有太多,这可能会吃掉它。
<<chunk1>>=
a <- 1:200000000
@
<<chunk2>>=
b <- 1:200000000
@
<<chunk3>>=
c <- 1:200000000
@
这种情况下的解决方案是:
<<chunk1>>=
a <- 1:200000000
@
<<chunk2>>=
rm(a)
gc()
b <- 1:200000000
@
<<chunk3>>=
rm(b)
gc()
c <- 1:200000000
@
但是,在我的示例中(我可以发布它,因为它依赖于一个大型数据集),即使在我删除所有对象并运行之后gc()
,R
也不会清除所有内存(只有一些)。原因在?gc
:
However, it can be useful to call ‘gc’ after a large object has
been removed, as this may prompt R to return memory to the
operating system.
注意重要的词may
。R
有很多情况是这样指定的may
,因此它不是错误。
是否有一个块选项,我可以根据它knitr
开始一个新R
会话?