Проблемы с GC и ограничением памяти при использовании R - PullRequest
5 голосов
/ 26 июля 2010

Я использую R для некоторых относительно больших данных и решаю некоторые проблемы с памятью.Это на Linux.У меня значительно меньше данных, чем доступно в системе, так что это проблема управления распределением переходных процессов.

Когда я запускаю gc (), я получаю следующий список

           used   (Mb) gc trigger   (Mb)  max used   (Mb)
Ncells   2147186  114.7    3215540  171.8   2945794  157.4
Vcells 251427223 1918.3  592488509 4520.4 592482377 4520.3

, но R, похоже, выделяет 4 ГБ в резидентной памяти и 2 ГБ в свопе.Я предполагаю, что это выделенная ОС память, которую система управления памятью R выделит, а GC при необходимости.Однако допустим, что я не хочу, чтобы R OS выделяла более 4 ГБ, чтобы предотвратить перегрузку свопинга.Я всегда мог ограничиться, но тогда он просто падал, а не работал в ограниченном пространстве и чаще собирал GCing.Есть ли способ указать произвольный максимум для триггера gc и убедиться, что R никогда не выделяет больше os?Или есть что-то еще, что я мог бы сделать, чтобы управлять использованием памяти?

1 Ответ

3 голосов
/ 26 июля 2010

Короче говоря: нет.Я обнаружил, что вы просто не можете управлять микро памятью и gc().

С другой стороны, вы можете попытаться сохранить ваши данные в памяти, но «вне» R. bigmemory делает это довольно легко.Конечно, использование 64-битной версии R и достаточно оперативной памяти может также решить проблему.

...