purecopy
उपयोगकर्ता विन्यास या तीसरे पक्ष के पुस्तकालयों में कभी भी आवश्यक नहीं है। वास्तव में, यह एक नो-ऑप है जब इसे सामान्य एमएसीएस उदाहरण से बुलाया जाता है। से शुद्ध संग्रहण :
यह समारोह एक नो-ऑप है, सिवाय जबकि Emacs का निर्माण और डंप किया जा रहा है ; इसे आमतौर पर केवल प्रीलोडेड लिस्प फ़ाइलों में कहा जाता है।
कुछ पृष्ठभूमि जानकारी इस प्रकार है।
शुद्ध भंडारण
Emacs की दो चरणीय निर्माण प्रक्रिया है। यह पहले एक सादे बाइनरी बनाता है, और फिर इस बाइनरी को चलाता है, बिल्ट-इन पुस्तकालयों के एक चयनित सेट को लोड करता है, और फिर प्रक्रिया की एक मेमोरी छवि को डंप करता है, और emacs
इस डंप से वास्तविक बाइनरी बनाता है ।
इस जटिल प्रक्रिया के कारण बेहतर प्रदर्शन और कम मेमोरी उपयोग हैं: पूर्व-लोडिंग आवश्यक Emacs लिस्प पुस्तकालयों को तेजी से स्टार्टअप की अनुमति देता है, क्योंकि पहले से लोड किए गए पुस्तकालयों में अंतर्निहित IO को लोड करने के लिए कोई IO की आवश्यकता नहीं होती है, और मेमोरी का उपयोग कम हो जाता है, क्योंकि पहले से लोड किए गए पुस्तकालयों से सभी Emacs उदाहरणों के बीच साझा किया जा सकता है।
यह विशेष मेमोरी क्षेत्र जिसमें प्री-लोडेड लाइब्रेरी शामिल हैं, "शुद्ध भंडारण" है। यह आसानी से है, इसलिए "शुद्ध", पूर्वोक्त स्मृति साझाकरण के लिए अनुमति देने के लिए। इसलिए, purecopy
सामान्य एमएसीएस उदाहरणों में एक नो-ऑप है: यह वैसे भी शुद्ध भंडारण में नहीं लिख सकता है। नतीजतन, शुद्ध भंडारण को कचरा संग्रहण से भी छूट दी गई है।
हालाँकि, प्री-लोडेड लाइब्रेरी के लिए मेमोरी इमेज बनाने और डंप करने के दौरान, ये लाइब्रेरी purecopy
शुद्ध स्टोरेज में आवंटन के लिए विशिष्ट ऑब्जेक्ट्स को "मार्क" करने के लिए उपयोग कर सकते हैं , आम तौर पर वैसे ऑब्जेक्ट्स का उपयोग किया जाता है जो वैसे भी Emacs के पूरे जीवनकाल के लिए आवश्यक होते हैं।
शुद्ध भंडारण में तार अनिवार्य रूप से वैश्विक स्थिर स्थिर तार हैं। चूंकि "make -k"
एमएसीएस सत्रों को चलाने में अक्सर इसका उपयोग किया जा रहा है (यह संभवतः सबसे अधिक इस्तेमाल किया जाने वाला संकलन कमांड है, यहां तक कि आज भी), यह अनावश्यक पुन: आवंटन और कचरा संग्रह से बचने के लिए, इस स्ट्रिंग को स्थिर और स्थिर रखने के लिए समझ में आता है।
शुद्ध भंडारण की यह अवधारणा भी कारण है कि संशोधित है .el
कुछ बिल्ट-इन पुस्तकालयों (विशेष रूप से की फ़ाइलों को startup.el
, subr.el
Emacs वास्तव में कभी भार इन पुस्तकालयों के स्रोत फ़ाइलें:, और अन्य) कोई प्रभाव नहीं है। इसके बजाय, इसका बाइट कोड उसके बाइनरी में बनाया गया है, और उन्हें एक विशेष मेमोरी क्षेत्र से लोड करता है।