Lua Academy · पाठ

Lua कचरा संग्राहक की मूल बातें

जानें कि Lua का वृद्धिशील GC कैसे काम करता है: मार्क-एंड-स्वीप, सीमाएँ और collectgarbage()।

पाठ 1, कुल 4 में से13 चरण

Lua कचरा संग्राहक की मूल बातें, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

कचरा संग्रहण क्या है

Lua एक स्वचालित कचरा संग्राहक का उपयोग करता है, जो उन ऑब्जेक्ट्स (तालिकाएँ, स्ट्रिंग और क्लोज़र) द्वारा घेरी गई मेमोरी वापस प्राप्त करता है, जो अब किसी भी रूट से पहुँच योग्य नहीं हैं।

मार्क-एंड-स्वीप एल्गोरिदम

Lua का GC वृद्धिशील मार्क-एंड-स्वीप एल्गोरिदम उपयोग करता है। यह रूट से शुरू करके सभी पहुँच योग्य ऑब्जेक्ट्स को चिह्नित करता है, फिर अचिह्नित ऑब्जेक्ट्स को साफ़ (मुक्त) करता है।

वृद्धिशील संग्रहण

GC प्रोग्राम के साथ छोटे चरणों में चलता है। इससे लंबे विराम से बचा जाता है। प्रत्येक चरण में किए जाने वाले कार्य की मात्रा GC चरण के पैरामीटर नियंत्रित करते हैं।

collectgarbage फ़ंक्शन

collectgarbage(opt, arg) GC को सीधे नियंत्रित करता है।

collectgarbage("collect")      -- run a full GC cycle
collectgarbage("stop")         -- stop automatic GC
collectgarbage("restart")      -- restart automatic GC
print(collectgarbage("count")) -- KB of memory in use

GC पैरामीटर

collectgarbage("setpause", n) GC चक्रों के बीच का विराम निर्धारित करता है (200 = अगले चक्र से पहले मेमोरी दोगुनी)। "setstepmul" GC की गति नियंत्रित करता है।

collectgarbage("setpause", 200)    -- default
collectgarbage("setstepmul", 200)  -- default

कमज़ोर संदर्भ और GC

सामान्यतः कोई संदर्भ ऑब्जेक्ट को जीवित रखता है। कमज़ोर संदर्भ ऐसा नहीं करता — किसी कमज़ोर तालिका के ऑब्जेक्ट की ओर संकेत होने पर भी GC उसे एकत्र कर सकता है।

पीढ़ीगत GC (Lua 5.4)

Lua 5.4 में वैकल्पिक पीढ़ीगत GC मोड जोड़ा गया। नए ऑब्जेक्ट बार-बार एकत्र किए जाते हैं; पुराने ऑब्जेक्ट कम बार। इसे collectgarbage("generational") से बदलें।

मेमोरी दबाव के ट्रिगर

जब मेमोरी का उपयोग एक सीमा से अधिक हो जाता है (जो pause द्वारा निर्धारित होती है), तो GC स्वचालित रूप से चलता है। बहुत-सी अस्थायी तालिकाएँ आवंटित करने से GC का दबाव बढ़ता है और आपका प्रोग्राम धीमा हो सकता है।

GC का दबाव कम करना

  • नई तालिकाएँ आवंटित करने के बजाय तालिकाओं का पुनः उपयोग करें।
  • तेज़ लूप में कम समय तक जीवित रहने वाले बहुत-से क्लोज़र बनाने से बचें।
  • ज्ञात आकार वाली सारणियों के लिए पहले से मेमोरी आवंटित करें।

स्ट्रिंग इंटरनिंग

Lua सभी स्ट्रिंग को इंटरन करता है — समान स्ट्रिंग एक ही ऑब्जेक्ट साझा करती हैं। इसका अर्थ है कि स्ट्रिंग बनाना O(n) हैश कार्य है, लेकिन तुलना O(1) है। छोटी स्ट्रिंग बहुत कम लागत वाली होती हैं।

फ़ाइनलाइज़र (__gc)

तालिकाओं में __gc मेटामेथड हो सकता है, जिसे ऑब्जेक्ट मुक्त होने से पहले GC बुलाता है। यह फ़ाइल हैंडल या C पॉइंटर जैसे बाहरी संसाधन मुक्त करने के लिए उपयोगी है।

GC प्रश्न

collectgarbage("count") क्या लौटाता है?

पुनरावृत्ति: Lua GC की मूल बातें

Lua का वृद्धिशील मार्क-एंड-स्वीप GC पहुँच से बाहर हो चुकी मेमोरी को स्वचालित रूप से वापस प्राप्त करता है। संग्रहण पर निगरानी और नियंत्रण के लिए collectgarbage का उपयोग करें। तालिकाओं का पुनः उपयोग करके और महत्वपूर्ण पथों में अत्यधिक आवंटन से बचकर दबाव कम करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Lua सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
40
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “Lua कचरा संग्राहक की मूल बातें” पाठ निःशुल्क है?

हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Lua कचरा संग्राहक की मूल बातें” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Lua कचरा संग्राहक की मूल बातें” में मैं क्या सीखूँगा?

जानें कि Lua का वृद्धिशील GC कैसे काम करता है: मार्क-एंड-स्वीप, सीमाएँ और collectgarbage()। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“Lua कचरा संग्राहक की मूल बातें” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Lua कचरा संग्राहक की मूल बातें
  2. कमज़ोर कुंजियाँ और कमज़ोर मान
  3. __gc के साथ फ़ाइनलाइज़र
  4. मेमोरी लीकेज से बचना
← Lua Academy पर वापस जाएँ