knitr: iniciando uma nova sessão R para limpar a RAM
Eu às vezes trabalho com muitos objetos e seria bom ter um novo começo por causa de problemas de memória entre os pedaços. Considere o seguinte exemplo:
aviso: eu tenho 8GB de RAM. Se você não tem muito, isso pode acabar com tudo.
<<chunk1>>=
a <- 1:200000000
@
<<chunk2>>=
b <- 1:200000000
@
<<chunk3>>=
c <- 1:200000000
@
A solução neste caso é:
<<chunk1>>=
a <- 1:200000000
@
<<chunk2>>=
rm(a)
gc()
b <- 1:200000000
@
<<chunk3>>=
rm(b)
gc()
c <- 1:200000000
@
No entanto, no meu exemplo (que posso postar porque depende de um grande conjunto de dados), mesmo depois de remover todos os objetos e executargc()
, R
não limpa toda a memória (apenas alguns). A razão é encontrada em?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.
Observe a palavra importantemay
. R
tem muitas situações em que especificamay
assim e por isso não é um bug.
Existe uma opção de pedaço de acordo com a qual eu posso terknitr
começar de novoR
sessão?