Есть ли способ очистить больше оперативной памяти, чем rm(list=ls()); gc()
?
Я ожидал, что сборщик мусора (т. Е. gc()
) очистит всю оперативную память до уровня оперативной памяти, который использовался в начале сеанса R, однако на ноутбуке с 16 ГБ ОЗУ я заметил следующее:
# Load a large object
large_object <- readRDS("large_object.RDS")
object.size(large_object)
13899229872 bytes # i.e. ~14 gig
# Clear everything
rm(list=ls(all=T)); gc()
# Load large object again
large_object <- readRDS("large_object.RDS")
Error: vector memory exhausted (limit reached?)
Я не могу объяснить, почему было достаточно памяти в первый раз, но не во второй.
Примечание: при возобновлении сеанса R (т. Е. .rs.restartR()
) readRDS("large_object.RDS")
снова работает
Вопрос
В дополнение к rm(list=ls())
и gc()
, как можно освободить больше оперативной памяти во время текущего сеанса R без перезапуска?