Увеличение (или уменьшение) памяти, доступной процессам R

123

Я хотел бы увеличить (или уменьшить) объем памяти, доступной для R. Каковы методы для этого?

medriscoll
источник

Ответы:

64

Из:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( зеркало )

Пользователи Windows могут получить сообщение об ошибке, что R закончилась нехватка памяти.

Если вы уже установили R и впоследствии установили больше ОЗУ, вам, возможно, придется переустановить R, чтобы воспользоваться дополнительной емкостью.

Вы также можете установить объем доступной памяти вручную. Закройте R, затем щелкните правой кнопкой мыши значок программы R (значок на рабочем столе или в каталоге программ). Выберите `` Свойства '', а затем выберите вкладку `` Ярлык ''. Найдите поле `` Цель '' и после закрывающих кавычек вокруг местоположения исполняемого компонента R добавьте

--max-MEM-500M размер =

как показано на рисунке ниже. Вы можете увеличить это значение до 2 ГБ или максимального количества установленной физической памяти.

Если вы получаете сообщение об ошибке, что R не может выделить вектор длины x, закройте R и добавьте следующую строку в поле `` Target '':

--max-VSIZE = 500M

или по мере необходимости. Вы всегда можете проверить, сколько памяти R доступно, набрав в командной строке R

memory.limit()

что дает вам объем доступной памяти в МБ. В предыдущих версиях R вам необходимо использовать: round(memory.limit()/2^20, 2).

BobbyShaftoe
источник
7
Обратите внимание, что в 32-битной Windows R может использовать только до 3 Гб оперативной памяти, независимо от того, сколько вы установили. Существует 64-битная версия R для Windows, доступная от REvolution Computing, которая работает в 64-битной Windows и может использовать всю доступную оперативную память: Revolution-computing.com/products/revolution-enterprise.php
David Smith,
6
Всего два примечания: (i) memory.limit () работает только в Windows, и (ii) команда, которая вернет правильный ответ, круглая (memory.limit (), 2) - по крайней мере, в моей версии R ( 2.8.1).
medriscoll
31
Любые предложения о том, как получить информацию, аналогичную memory.limit (), работающей в Linux?
отлично,
5
Веб-страница больше не существует. Мне сложно следить за этим без изображений. Я, например, не вижу вкладки "Ярлык". Кроме того, можете ли вы использовать это для уменьшения максимального объема памяти?
blakeoft
6
Итак, что насчет пользователей Mac? Мы можем что-нибудь с этим поделать?
Альфредо Лозано
52

Используйте memory.limit(). Вы можете увеличить значение по умолчанию, используя эту команду memory.limit(size=2500), где размер указан в МБ. Вам необходимо использовать 64-разрядную версию, чтобы воспользоваться этим преимуществом.

Еще одно предложение - по возможности использовать объекты с эффективным использованием памяти: например, использовать матрицу вместо data.frame.

Шейн
источник
3
Я действительно не понимаю, как это работает. Я столкнулся с этой проблемой ограничения памяти и получил ошибку «Достигнуто общее выделение 8182 МБ». Я использую 64-разрядную версию с оперативной памятью 8 ГБ, поэтому мне показалось, что я SOL. Однако для перетряски я установил memory.limit (size = 50000) ... И ЭТО Сработало! Но почему???
лесотехолог
2
Я знаю, что ему 7 лет, но я пытаюсь уменьшить объем ОЗУ, который может использовать R, но всякий раз, когда я пытаюсь уменьшить значение, я получаю это сообщение (у меня 12 ГБ ОЗУ на 64-битной машине Windows) , Предупреждающее сообщение: In memory.limit (4095): невозможно уменьшить ограничение памяти: игнорируется
Hellter
7

Microsoft Windows принимает любой запрос памяти от процессов, если это возможно.

Нет ограничений на объем памяти, который может быть предоставлен процессу, за исключением размера виртуальной памяти.

Размер виртуальной памяти составляет 4 ГБ в 32-битных системах для любых процессов, независимо от того, сколько приложений вы запускаете. Любые процессы могут выделять до 4 ГБ памяти в 32-битных системах.

На практике Windows автоматически выделяет некоторые части выделенной памяти из ОЗУ или файла подкачки в зависимости от запросов процессов и механизма файла подкачки.

Но еще одно ограничение - это размер файла подкачки. Если у вас есть небольшой файл подкачки, вы не можете выделить большую память. Вы можете увеличить размер файла подкачки согласно Microsoft, чтобы иметь больше места в памяти.

Исаак
источник
5
  1. Купите больше барана
  2. Переключитесь на 64-битную ОС. Совместите с пунктом 1.
Дирк Эддельбюттель
источник
23
Купить больше оперативной памяти (и переключиться на другую ОС) - не совсем подходящее решение.
om-nom-nom
17
Конечно, это так же, как работа над небольшими проблемами, которые подходят для данной проблемы. Желание решения обычно не дает вам его.
Дирк Эддельбюттель
2

Чтобы увеличить объем памяти, выделенной для R, вы можете использовать memory.limit

memory.limit(size = ...)

Или

memory.size(max = ...)

Об аргументах

  • размер - числовой. Если NA сообщает об ограничении памяти, в противном случае запросите новый предел в МБ. В 32-разрядных сборках R разрешены только значения до 4095, но см. «Подробности».
  • макс - логично. Если TRUE - максимальный объем памяти, полученный от ОС, если FALSE - объем, используемый в настоящее время, если NA - ограничение памяти.
Тьяго Мартинс Перес 李大仁
источник