การเพิ่ม (หรือลดลง) หน่วยความจำที่มีให้สำหรับกระบวนการ R


123

ฉันต้องการเพิ่ม (หรือลด) จำนวนหน่วยความจำที่มีให้กับ R มีวิธีใดบ้างในการบรรลุสิ่งนี้

คำตอบ:


64

จาก:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( มิเรอร์ )

ผู้ใช้ Windows อาจได้รับข้อผิดพลาดว่า R มีหน่วยความจำไม่เพียงพอ

หากคุณติดตั้ง R ไว้แล้วและติดตั้ง RAM เพิ่มเติมในภายหลังคุณอาจต้องติดตั้ง R ใหม่เพื่อใช้ประโยชน์จากความจุเพิ่มเติม

คุณสามารถกำหนดจำนวนหน่วยความจำที่มีได้ด้วยตนเอง ปิด R จากนั้นคลิกขวาที่ไอคอนโปรแกรม R ของคุณ (ไอคอนบนเดสก์ท็อปหรือในไดเรกทอรีโปรแกรมของคุณ) เลือก `` Properties '' จากนั้นเลือกแท็บ `` Shortcut '' มองหาช่อง `` เป้าหมาย '' และหลังเครื่องหมายคำพูดปิดรอบตำแหน่งของ R ที่เรียกใช้งานได้ให้เพิ่ม

--max-Mem-size = 500M

ดังแสดงในรูปด้านล่าง คุณสามารถเพิ่มค่านี้ได้ถึง 2GB หรือจำนวนสูงสุดของ RAM จริงที่คุณติดตั้ง

หากคุณได้รับข้อผิดพลาดที่ R ไม่สามารถจัดสรรเวกเตอร์ที่มีความยาว x ได้ให้ปิด R และเพิ่มบรรทัดต่อไปนี้ในฟิลด์ `` เป้าหมาย '':

--max-vsize = 500M

หรือตามความเหมาะสม คุณสามารถตรวจสอบว่าหน่วยความจำ R มีอยู่เท่าใดโดยพิมพ์ที่พรอมต์ R

memory.limit()

ซึ่งให้จำนวนหน่วยความจำที่มีอยู่ในหน่วย MB ในรุ่นก่อนหน้าของ R round(memory.limit()/2^20, 2)ที่คุณจำเป็นต้องใช้:


7
โปรดทราบว่าใน Windows 32 บิต R สามารถใช้ RAM ได้สูงสุด 3Gb เท่านั้นไม่ว่าคุณจะติดตั้งมากแค่ไหนก็ตาม มี R สำหรับ Windows เวอร์ชัน 64 บิตจาก REvolution Computing ซึ่งทำงานบน Windows 64 บิตและสามารถใช้ RAM ทั้งหมดที่มีอยู่: 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 ล่ะ? เราจะทำอะไรกับมันได้ไหม?
Alfredo Lozano

52

ใช้memory.limit(). คุณสามารถเพิ่มค่าดีฟอลต์ได้โดยใช้คำสั่งนี้โดยmemory.limit(size=2500)มีขนาดเป็น MB คุณต้องใช้ 64 บิตเพื่อใช้ประโยชน์จากสิ่งนี้อย่างแท้จริง

ข้อเสนอแนะอีกประการหนึ่งคือการใช้อ็อบเจ็กต์ที่มีประสิทธิภาพของหน่วยความจำทุกที่ที่เป็นไปได้ตัวอย่างเช่นใช้เมทริกซ์แทน data.frame


3
ฉันไม่เข้าใจจริงๆว่ามันทำงานอย่างไร ฉันพบปัญหาการ จำกัด หน่วยความจำนี้และได้รับข้อผิดพลาด "ถึงการจัดสรรทั้งหมด 8182Mb" ฉันใช้ 64-bit กับ 8GB ram ดูเหมือนว่าฉันจะเป็น SOL อย่างไรก็ตามสำหรับ shiggles ฉันตั้ง memory.limit (size = 50000) ... และมันก็ใช้งานได้! แต่ทำไม ???
theforestecologist

2
ฉันรู้ว่านี่อายุ 7 ปีแล้ว แต่ฉันกำลังพยายามลดจำนวน RAM ที่สามารถใช้โดย R ได้ แต่เมื่อใดก็ตามที่ฉันพยายามลดค่าฉันจะได้รับข้อความนี้ (ฉันมี Ram 12gb ในเครื่อง Windows 64 บิต) . ข้อความเตือน: ใน memory.limit (4095): ไม่สามารถลดขีด จำกัด หน่วยความจำ: ละเว้น
hellter

7

Microsoft Windows ยอมรับคำขอหน่วยความจำใด ๆ จากกระบวนการต่างๆหากสามารถทำได้

ไม่มีขีด จำกัด สำหรับหน่วยความจำที่สามารถจัดเตรียมให้กับกระบวนการได้ยกเว้นขนาดหน่วยความจำเสมือน

ขนาดหน่วยความจำเสมือนคือ 4GB ในระบบ 32 บิตสำหรับกระบวนการใด ๆ ไม่ว่าคุณจะใช้งานกี่แอปพลิเคชันก็ตาม กระบวนการใด ๆ สามารถจัดสรรหน่วยความจำได้สูงสุด 4GB ในระบบ 32 บิต

ในทางปฏิบัติ Windows จะจัดสรรหน่วยความจำบางส่วนจาก RAM หรือไฟล์เพจโดยอัตโนมัติขึ้นอยู่กับการร้องขอกระบวนการและกลไกการเพจของไฟล์

แต่ข้อ จำกัด อีกประการหนึ่งคือขนาดของไฟล์เพจจิ้ง หากคุณมีไฟล์เพจขนาดเล็กคุณจะไม่สามารถจัดสรรความทรงจำขนาดใหญ่ได้ คุณสามารถเพิ่มขนาดของไฟล์เพจจิ้งตามMicrosoftเพื่อให้มีพื้นที่หน่วยความจำมากขึ้น


5
  1. ซื้อ ram
  2. เปลี่ยนเป็นระบบปฏิบัติการ 64 บิต รวมกับจุดที่ 1

23
ซื้อ ram เพิ่ม (และเปลี่ยนไปใช้ OS อื่น) ไม่ใช่วิธีแก้ปัญหาที่เหมาะสมโดยทั่วไป
om-nom-nom

17
แน่นอนว่ามันเหมือนกับการทำงานกับปัญหาเล็ก ๆ ที่เหมาะสมกับปัญหาในมือ ความปรารถนาในการแก้ปัญหามักจะไม่ได้รับคุณเช่นกัน
Dirk Eddelbuettel

2

ในการเพิ่มจำนวนหน่วยความจำที่จัดสรรให้กับ R คุณสามารถใช้memory.limit

memory.limit(size = ...)

หรือ

memory.size(max = ...)

เกี่ยวกับข้อโต้แย้ง

  • ขนาด - ตัวเลข หาก NA รายงานขีด จำกัด หน่วยความจำมิฉะนั้นขอขีด จำกัด ใหม่ใน Mb อนุญาตเฉพาะค่าที่สูงถึง 4095 ในรุ่น R 32 บิต แต่โปรดดู 'รายละเอียด'
  • สูงสุด - ตรรกะ หาก TRUE จำนวนหน่วยความจำสูงสุดที่ได้รับจากระบบปฏิบัติการถูกรายงานหาก FALSE จำนวนที่ใช้อยู่ในปัจจุบันถ้า NA ขีด จำกัด หน่วยความจำ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.