मैं विंडोज 7 64-बिट, 8 जीबी रैम मशीन पर लगभग 500 एमबी डेटासेट पर एक मॉडल का अनुमान लगाने के लिए mboost पैकेज से ब्लैकबोस्ट फ़ंक्शन का उपयोग कर रहा हूं। निष्पादन के दौरान आर लगभग सभी उपलब्ध स्मृति तक उपयोग करता है। गणना के बाद, जीसी() के साथ कचरा संग्रह को कॉल करने के बाद भी 4.5 जीबी से अधिक आर को आवंटित किया जाता है या वर्कस्पेस को नए आर सत्र में सहेजने और पुनः लोड करने के बाद भी रखा जाता है। .ls.objects का उपयोग करना (1358003) मैंने पाया कि सभी दृश्यमान वस्तुओं का आकार लगभग 550 एमबी है।मैं आर वर्कस्पेस से अदृश्य वस्तुओं को कैसे हटा सकता हूं जिन्हें कचरा संग्रह द्वारा हटाया नहीं जाता है?
जीसी() के उत्पादन में मुझसे कहता है कि डेटा के थोक, कि क्या मतलब वेक्टर कोशिकाओं में है, हालांकि मुझे यकीन है कि नहीं कर रहा हूँ:
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 2856967 152.6 4418719 236.0 3933533 210.1
Vcells 526859527 4019.7 610311178 4656.4 558577920 4261.7
यह मैं क्या कर रहा है:
> memory.size()
[1] 1443.99
> model <- blackboost(formula, data = mydata[mydata$var == 1,c(dv,ivs)],tree_control=ctree_control(maxdepth = 4))
... संकुल की एक गुच्छा लोड किए गए हैं ...
> memory.size()
[1] 4431.85
> print(object.size(model),units="Mb")
25.7 Mb
> memory.profile()
NULL symbol pairlist closure environment promise language
1 15895 826659 20395 4234 13694 248423
special builtin char logical integer double complex
174 1572 1197774 34286 84631 42071 28
character ... any list expression bytecode externalptr
228592 1 0 79877 1 51276 2182
weakref raw S4
413 417 4385
MyData [MyData $ वर == 1, सी (DV, IVS)] 139,593 पंक्तियों और 75 colum है एनएस ज्यादातर कारक चर और कुछ तार्किक या संख्यात्मक चर के साथ। फॉर्मूला इस प्रकार का सूत्र सूत्र है: "dv ~ var2 + var3 + .... + var73"। डीवी एक परिवर्तनीय नाम स्ट्रिंग है और ivs सभी स्वतंत्र चर var2 के साथ एक स्ट्रिंग वेक्टर है ... var74।
आर को इतना स्मृति आवंटित क्यों की जा रही है? मैं अतिरिक्त मेमोरी को मुक्त कैसे कर सकता हूं? किसी भी विचार की सराहना की!
क्या करता है 'memory.size()' रिपोर्ट: वह पैकेज जीबीएम (जो मैं अपने परिणामों को दोहराने सकता है नहीं करने के लिए, अभी तक) या क्रमानुसार करने, कुछ इस तरह करने से उपयोग करने की सिफारिश? – James
यह कोड में एक स्मृति रिसाव हो सकता है। क्या आप जिस फ़ंक्शन को कॉल कर रहे हैं उसका एक उदाहरण पेस्ट कर सकते हैं (डेमो डेटा के साथ)? – Spacedman
'स्मृति रिसाव' से आपका क्या मतलब है? मैंने अपने प्रश्न में कुछ नमूना कोड जोड़ा। अगर आपको अधिक जानकारी चाहिए तो कृपया मुझे बताएं। @ जेम्स: मैंने अपने प्रश्न पर ब्लैकबोस्ट फ़ंक्शन से पहले और बाद में memory.size() आउटपुट जोड़ा। – Nima