मेमोरी चक्र
प्रोग्रामिंग भाषा चाहे जो भी हो, लगभग सभी प्रोग्रामिंग भाषाओं के लिए मेमोरी चक्र समान होता है।
मेमोरी लाइफ साइकिल में 3 चरण होते हैं
1) मेमोरी का आवंटन।
2) आवंटित मेमोरी का उपयोग (पढ़ना या लिखना)
3) जब अनावश्यक हो तो आवंटित मेमोरी को मुक्त करना।
पहला और अंतिम भाग निम्न-स्तरीय भाषाओं में सीधे जुड़े होते हैं लेकिन JavaScript जैसी उच्च-स्तरीय भाषाओं में अप्रत्यक्ष रूप से जुड़े होते हैं।
1) JavaScript में मेमोरी का आवंटन
JavaScript को गार्बेज कलेक्टेड भाषा कहा जाता है, अर्थात जब चर घोषित किए जाते हैं, तो यह स्वचालित रूप से उन्हें मेमोरी आवंटित करता है। जब घोषित चरों के लिए कोई और संदर्भ नहीं रहता, तो आवंटित मेमोरी मुक्त हो जाती है।
उदाहरण
निम्न उदाहरण में JavaScript ने एक संख्या, एक स्ट्रिंग और एक ऑब्जेक्ट के लिए मेमोरी आवंटित की है।
var n = 989; // allocates memory for a number var s = 'qwerty'; // allocates memory for a string var o = { a: 1, b: null }; // allocates memory for an object and contained values2) आवंटित मानों का उपयोग
मानों का उपयोग मूल रूप से आवंटित मेमोरी में पढ़ना और लिखना है। यह चर या ऑब्जेक्ट प्रॉपर्टी के मान को पढ़कर या लिखकर या फ़ंक्शन में आर्गुमेंट पास करके किया जा सकता है।
3) जब अनावश्यक हो तो आवंटित मेमोरी को मुक्त करना
अधिकांश मेमोरी प्रबंधन समस्याएं इसी चरण में आती हैं। यहां कठिन कार्य यह पता लगाना है कि आवंटित मेमोरी कब आवश्यक नहीं रही। इस समस्या को हल करने के लिए अधिकांश उच्च-स्तरीय भाषाएं गार्बेज कलेक्टर नामक सॉफ़्टवेयर का एक टुकड़ा एम्बेड करती हैं।
गार्बेज कलेक्टर का कार्य मेमोरी आवंटन को ट्रैक करना और यह पता लगाना है कि आवंटित मेमोरी कब आवश्यक नहीं रही ताकि उसे मुक्त किया जा सके। दुर्भाग्य से यह प्रक्रिया केवल एक अनुमान है क्योंकि यह जानने की सामान्य समस्या कि मेमोरी का कोई टुकड़ा आवश्यक है या नहीं, अनिर्णेय है (एल्गोरिदम पता नहीं लगा सकता)।
JavaScript गार्बेज कलेक्टर रेफरेंस-काउंटिंग गार्बेज कलेक्शन जैसे कुछ एल्गोरिदम का उपयोग करता है ताकि यह पता लगाया जा सके कि कौन सी मेमोरी अब उपयोग में नहीं है।