Использование памяти в R

select * from sysobjects where xtype='U'

25
задан theycallmemorty 23 July 2009 в 13:07
поделиться

3 ответа

Память для удаленных объектов не освобождается немедленно. R использует технику, называемую «сборкой мусора», чтобы освободить память для удаленных объектов. Периодически он циклически просматривает список доступных объектов (в основном, те, которые имеют имена и не были удалены и, следовательно, могут быть доступны пользователю), и «помечает» их для хранения. Память для любых немаркированных объектов возвращается операционной системе после очистки сборки мусора.

Сборка мусора происходит автоматически, и вы не имеете никакого прямого контроля над этим процессом. Но вы можете принудительно выполнить очистку, вызвав команду gc () из командной строки.

Даже тогда в некоторых операционных системах сборка мусора может не освободить память (как сообщает ОС). Старые версии Windows, например,

20
ответ дан 28 November 2019 в 21:39
поделиться

В Windows метод, который вы описываете, работает для меня. Попробуйте следующий пример.

Откройте диспетчер задач Windows (CTRL + SHIFT + ESC).

Запустите RGui. Использование памяти RGui.exe составляет 27 460 КБ.

Тип

gcinfo(TRUE)
x <- rnorm(1e8)

Использование памяти RGui.exe теперь составляет 811 100 КБ.

Тип rm ("x") . RGui. Использование exe mem по-прежнему составляет 811 100 КБ.

Введите gc () . Теперь используется память RGui.exe 28 332 КБ.

Обратите внимание, что gc должен вызываться автоматически, если вы удалили объекты из своей рабочей области, а затем вы попытаетесь выделить больше памяти для новых переменных.

8
ответ дан 28 November 2019 в 21:39
поделиться

У меня сложилось впечатление, что проверяются несколько форм gc () , прежде чем R сообщит о неудачном выделении памяти. В настоящее время я не знаю решения для этого, кроме перезапуска R, как вы предлагаете. Похоже, что R не дефрагментирует память.

3
ответ дан 28 November 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: