Освобождение всей оперативной памяти в сеансе R без перезапуска сеанса R? - PullRequest
4 голосов
/ 17 апреля 2020

Есть ли способ очистить больше оперативной памяти, чем 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 без перезапуска?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...