Збільшення (або зменшення) пам'яті, доступної процесам R


123

Я хотів би збільшити (або зменшити) об'єм пам'яті, доступної Р. Які методи для досягнення цього?

Відповіді:


64

Від:

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

Користувачі Windows можуть отримати помилку, що у R не вистачило пам'яті.

Якщо ви вже встановили R, а потім встановите більше оперативної пам’яті, можливо, доведеться перевстановити R, щоб скористатися додатковою ємністю.

Ви також можете встановити об'єм доступної пам'яті вручну. Закрийте R, а потім клацніть правою кнопкою миші на значку програми R (піктограма на робочому столі або в каталозі програм). Виберіть `` Властивості '', а потім виберіть вкладку `Ярлик '. Шукайте поле `` Ціль '' і після завершення цитат навколо розташування виконуваного R додайте

- max-mem-size = 500М

як показано на малюнку нижче. Ви можете збільшити це значення до 2 Гб або максимальну встановлену фізичну пам'ять.

Якщо ви отримаєте помилку, що R не може виділити вектор довжини x, закрийте з R та додайте наступний рядок у поле `` Ціль '':

--max-vsize = 500М

або відповідно. Ви завжди можете перевірити, скільки пам'яті R має, ввівши в рядку R

memory.limit()

що дає вам кількість доступної пам'яті в МБ. У попередніх версіях R вам необхідно використовувати: round(memory.limit()/2^20, 2).


7
Зауважте, що в 32-розрядної Windows R може використовувати лише до 3 Гб оперативної пам’яті, незалежно від того, скільки встановлено. Існує 64-розрядна версія R для Windows, доступна в Revolution Computing, яка працює на 64-бітних Windows і може використовувати всю доступну оперативну пам’ять: revolution-computing.com/products/revolution-enterprise.php
Девід Сміт

6
Лише дві примітки: (i) memory.limit () працює лише в Windows, і (ii) команда, яка поверне правильну відповідь, кругла (memory.limit (), 2) - принаймні для моєї версії R ( 2.8.1).
medriscoll

31
Будь-які пропозиції щодо отримання подібної інформації, як memory.limit (), що працює на Linux?
exl

5
Веб-сторінка вже не існує. Мені важко слідувати цьому без образів. Наприклад, я не бачу вкладки "Ярлик". Також ви можете використовувати це для зменшення максимальної пам'яті?
blakeoft

6
Отже, що робити з користувачами Mac? Чи можемо ми щось з цим зробити?
Альфредо Лозано

51

Використовуйте memory.limit(). Ви можете збільшити за замовчуванням за допомогою цієї команди memory.limit(size=2500), де розмір знаходиться в МБ. Щоб реально скористатися цим, вам потрібно використовувати 64-розрядні.

Ще одна пропозиція - використовувати об'єкти, ефективні в пам'яті, де це можливо: наприклад, використовувати матрицю замість data.frame.


3
Я не дуже розумію, як це працює. Я наткнувся на цю проблему з обмеженням пам’яті та отримав помилку «Досягнуто загального розподілу 8182Mb». Я використовую 64-розрядні з 8 ГБ оперативної пам’яті, тому я здавався SOL Однак для хихикань я встановив memory.limit (размер = 50000) ... І РОБОТИ! Але чому???
theforestecologist

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, але див. "Подробиці".
  • max - логічно. Якщо ПРАВИЛЬНО повідомляється про максимальний об'єм пам'яті, отриманий з ОС, якщо ЛІЖНЯ кількість, що використовується в даний час, якщо NA обмеження пам'яті.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.