कचरा संग्रहण (GC) स्वचालित मेमोरी प्रबंधन का एक रूप है। कचरा संग्रहकर्ता, या सिर्फ संग्राहक, कचरा, या उन वस्तुओं द्वारा कब्जा की गई स्मृति को पुनः प्राप्त करने का प्रयास करता है जो अब प्रोग्राम द्वारा उपयोग में नहीं हैं। स्वचालित रूप से यह पता लगाने की सामान्य समस्या कि क्या कुछ मेमोरी "अब और आवश्यक नहीं है" अनिर्णीत है। एक परिणाम के रूप में, कचरा संग्रहकर्ता सामान्य समस्या के समाधान के प्रतिबंध को लागू करते हैं।
कचरा संग्रहण एल्गोरिदम जिस मुख्य अवधारणा पर निर्भर करता है वह संदर्भ की अवधारणा है। स्मृति प्रबंधन के संदर्भ में, एक वस्तु को किसी अन्य वस्तु को संदर्भित करने के लिए कहा जाता है यदि पूर्व के पास बाद वाली (या तो स्पष्ट रूप से या स्पष्ट रूप से) तक पहुंच है।
उदाहरण
let a = [] function addToA() { let x = {name: "John"} a.push(x) } console.log(a[0])
आउटपुट
{name: "John"}
ध्यान दें कि x अब दायरे में नहीं है लेकिन a का उपयोग करके अभी भी पहुंच योग्य है। इसका मतलब यह है कि इसे तब तक स्मृति में रहने की जरूरत है जब तक कि इसका संदर्भ अब और न हो। यदि हम इसे सरणी से पॉप करते हैं, तो इसकी अब और आवश्यकता नहीं होगी और इसे कचरा एकत्र किया जा सकता है।
कचरा संग्रहकर्ता निम्नलिखित एल्गोरिदम का उपयोग करके काम करते हैं -
<मजबूत>1. संदर्भ-गणना कचरा संग्रहण - एक वस्तु को "कचरा" कहा जाता है, या संग्रहणीय कहा जाता है यदि शून्य संदर्भ इसकी ओर इशारा करते हैं। इसका उपयोग पुराने ब्राउज़र में किया जाता है। लेकिन यह परिपत्र संदर्भित वस्तुओं के साथ एक समस्या का कारण बनता है क्योंकि उन्हें एकत्र नहीं किया जा सकता है (हमेशा दूसरी वस्तु से उनका संदर्भ होता है।)
<मजबूत>2. मार्क-एंड-स्वीप एल्गोरिथम - यह एल्गोरिथम "ऑब्जेक्ट की अब आवश्यकता नहीं है" की परिभाषा को "ऑब्जेक्ट अगम्य है" को कम कर देता है। यह एल्गोरिथ्म जड़ नामक वस्तुओं के एक समूह के ज्ञान को ग्रहण करता है। जावास्क्रिप्ट में, जड़ वैश्विक वस्तु है। समय-समय पर, जीसी इन जड़ों से शुरू होता है, इन जड़ों से संदर्भित सभी वस्तुओं को पुनरावर्ती रूप से खोजें। जड़ों से शुरू होकर, जीसी इस प्रकार सभी पहुंच योग्य वस्तुओं को ढूंढेगा और सभी गैर-पहुंच योग्य वस्तुओं को एकत्र करेगा।
आप जावास्क्रिप्ट में जीसी के बारे में अधिक पढ़ सकते हैं https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management