आर प्रक्रियाओं के लिए उपलब्ध मेमोरी को बढ़ाना (या घटाना)


123

मैं आर को उपलब्ध स्मृति की मात्रा को बढ़ाना (या घटाना) चाहूंगा कि इसे प्राप्त करने के तरीके क्या हैं?

जवाबों:


64

से:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( दर्पण )

Windows उपयोगकर्ताओं को त्रुटि हो सकती है कि R स्मृति से बाहर चला गया है।

यदि आपके पास पहले से ही R स्थापित है और बाद में अधिक RAM स्थापित है, तो आपको अतिरिक्त क्षमता का लाभ लेने के लिए R को पुनः स्थापित करना पड़ सकता है।

आप उपलब्ध मेमोरी की मात्रा को मैन्युअल रूप से सेट कर सकते हैं। आर बंद करें, फिर अपने आर प्रोग्राम आइकन (अपने डेस्कटॉप पर आइकन या अपने कार्यक्रमों निर्देशिका में) पर राइट-क्लिक करें। `` गुण '' चुनें, और फिर `` शॉर्टकट '' टैब चुनें। '`लक्ष्य' 'फ़ील्ड देखें और R निष्पादन योग्य के स्थान के आसपास के कोट्स को जोड़ने के बाद जोड़ें

--max-मेम आकार = 500M

जैसा कि नीचे दिए गए चित्र में दिखाया गया है। आप इस मान को 2GB तक बढ़ा सकते हैं या आपके द्वारा स्थापित की गई अधिकतम भौतिक RAM।

यदि आपको यह त्रुटि मिलती है कि R, लंबाई x के वेक्टर को आवंटित नहीं कर सकता है, R के बाहर है और निम्न लाइन को `` लक्ष्य '' फ़ील्ड में जोड़ें:

--max-vsize = 500M

या उपयुक्त के रूप में। आप हमेशा यह देखने के लिए जांच सकते हैं कि R प्रॉम्प्ट पर टाइप करके R कितनी मेमोरी उपलब्ध है

memory.limit()

जो आपको MB में उपलब्ध मेमोरी की मात्रा प्रदान करता है। आर के पिछले संस्करणों में आपको उपयोग करने की आवश्यकता थी round(memory.limit()/2^20, 2):।


7
ध्यान दें कि 32-बिट विंडोज पर, आर केवल 3 जी रैम तक का उपयोग कर सकता है, भले ही आपने कितना भी स्थापित किया हो। वहाँ एक 64-बिट क्रांति कम्प्यूटिंग, जिस पर 64-बिट Windows चलाता है और सभी रैम उपलब्ध का उपयोग कर सकते से उपलब्ध विंडोज के लिए आर के संस्करण है: revolution-computing.com/products/revolution-enterprise.php
डेविड स्मिथ

6
बस दो नोट: (i) मेमोरी.लिमिट () केवल विंडोज पर काम करता है, और (ii) कमांड जो उचित उत्तर देगा, वह राउंड (मैमोरी.लिमिट) (, 2) है - कम से कम आर के मेरे संस्करण पर () 2.8.1)।
मेड्रिसकॉल

31
किसी भी सुझाव को कैसे प्राप्त करें।
EXL

5
वेबपेज अब मौजूद नहीं है। छवियों के बिना इसका पालन करना मेरे लिए कठिन है। मुझे उदाहरण के लिए "शॉर्टकट" टैब दिखाई नहीं देता है। इसके अलावा, क्या आप इसका उपयोग अधिकतम मेमोरी को कम करने के लिए कर सकते हैं?
ब्लेकॉफ्ट

6
तो, मैक उपयोगकर्ताओं के बारे में क्या? क्या हम इसके बारे में कुछ कर सकते हैं?
अल्फ्रेडो लोज़ानो

51

का उपयोग करें memory.limit()। आप इस आदेश का उपयोग करके डिफ़ॉल्ट बढ़ा सकते हैं memory.limit(size=2500), जहां आकार एमबी में है। इसका वास्तविक लाभ लेने के लिए आपको 64-बिट का उपयोग करने की आवश्यकता है।

एक अन्य सुझाव यह है कि जहाँ भी संभव हो मेमोरी मेमोरी ऑब्जेक्ट्स का उपयोग करें: उदाहरण के लिए, डेटा.फ्रेम के बजाय मैट्रिक्स का उपयोग करें।


3
मैं वास्तव में नहीं समझता कि यह कैसे काम करता है। मैं इस मेमोरी लिमिट इश्यू में भाग गया और त्रुटि "8182Mb के कुल आवंटन तक पहुँच गया"। मैं 8 जीबी रैम के साथ 64-बिट का उपयोग कर रहा हूं इसलिए मुझे एसओएल लग रहा था। हालाँकि, shiggles के लिए, मैंने मेमोरी। सेट (आकार = 50000) सेट किया है ... और यह काम किया है! पर क्यों???
theforestecologist 17

2
मुझे पता है कि यह 7 साल पुराना है, लेकिन मैं आर द्वारा उपयोग की जाने वाली रैम की मात्रा को कम करने की कोशिश कर रहा हूं, लेकिन जब भी मैं मूल्य को कम करने की कोशिश करता हूं तो मुझे यह संदेश मिलता है (मेरे पास 64-बिट विंडोज मशीन पर 12 जीबी रैम है) । चेतावनी संदेश: memory.limit (4095) में: मेमोरी सीमा को कम नहीं कर सकते हैं: नजरअंदाज कर दिया
नरक

7

Microsoft विंडोज प्रक्रियाओं से किसी भी मेमोरी अनुरोध को स्वीकार करता है अगर यह किया जा सकता है।

वर्चुअल मेमोरी साइज़ को छोड़कर, मेमोरी के लिए कोई सीमा नहीं दी जा सकती है।

वर्चुअल मेमोरी साइज किसी भी प्रक्रिया के लिए 32 बिट सिस्टम में 4GB है, चाहे आप कितने भी एप्लिकेशन चला रहे हों। कोई भी प्रक्रिया 32 बिट सिस्टम में 4GB मेमोरी तक आवंटित कर सकती है।

व्यवहार में, विंडोज़ स्वचालित रूप से प्रक्रियाओं के अनुरोधों और पेजिंग फ़ाइल तंत्र के आधार पर रैम या पेज-फाइल से आवंटित मेमोरी के कुछ हिस्सों को आवंटित करता है।

लेकिन एक और सीमा पेजिंग फ़ाइल का आकार है। यदि आपके पास एक छोटी पेजिंग-फ़ाइल है, तो आपको बड़ी यादें आवंटित नहीं की जा सकती हैं। आप Microsoft के अनुसार अधिक मेमोरी स्पेस रखने के लिए पेजिंग फ़ाइल का आकार बढ़ा सकते हैं ।


5
  1. अधिक राम खरीदें
  2. 64-बिट OS पर स्विच करें। बिंदु 1 के साथ मिलाएं।

23
अधिक राम खरीदें (और अन्य ओएस पर स्विच करें) सामान्य उपयुक्त समाधान नहीं है।
ओम-नॉम-नॉम

17
यकीन है कि यह छोटी समस्याओं पर काम करने की तरह है, जो हाथ में समस्या के लिए उपयुक्त हैं। एक समाधान के लिए कामना आमतौर पर आपको एक भी नहीं मिलती है।
डिर्क एडल्डबुलेटेल

2

R को आवंटित स्मृति की मात्रा बढ़ाने के लिए आप memory.limit का उपयोग कर सकते हैं

memory.limit(size = ...)

या

memory.size(max = ...)

तर्कों के बारे में

  • आकार - संख्यात्मक। यदि NA मेमोरी सीमा की रिपोर्ट करता है, तो एमबी में एक नई सीमा का अनुरोध करें। 32-बिट आर बिल्ड पर केवल 4095 तक के मूल्यों की अनुमति है, लेकिन 'विवरण' देखें।
  • अधिकतम - तार्किक। यदि TRUE OS से प्राप्त अधिकतम मेमोरी की सूचना दी गई है, यदि FALSE वर्तमान में उपयोग की जाने वाली राशि है, यदि NA मेमोरी लिमिट।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.