मैंने जावास्क्रिप्ट के लिए दोगुनी-लिंक्ड सूची का एक त्वरित और गंदा कार्यान्वयन लिखा। मैं एक साथ कई (लगातार) नोड्स को हटाने में सक्षम होना चाहता हूं, और सोच रहा था: क्या मैं इन बाहरी अधिकांश नोड्स के सिरों को अलग करने के लिए पर्याप्त है, या मुझे अलग-अलग प्रत्येक नोड को हटाना है। यदि मैं जावास्क्रिप्ट के कचरा संग्रह को सही ढंग से समझता हूं, तो एक बार उन नोड्स को कुछ भी इंगित नहीं करता है, जब भी वे एक-दूसरे से जुड़े होते हैं, तब भी उन्हें कचरा कलेक्टर द्वारा ख्याल रखा जाना चाहिए, क्या यह सही है? यदि कोई मुझे बता सकता है कि मैं इसे कैसे जांच सकता हूं या सत्यापित कर सकता हूं, तो मैं भी इसकी सराहना करता हूं।क्लोजर और कचरा संग्रह: एक लिंक की गई सूची से लगातार नोड्स को हटाने का सबसे प्रभावी तरीका
उत्तर
MDN के अनुसार:
2012 के रूप में, सभी आधुनिक ब्राउज़रों एक निशान और झाडू कचरा-कलेक्टर जहाज। पिछले कुछ वर्षों में जावास्क्रिप्ट कचरा संग्रह (पीढ़ी/वृद्धिशील/समवर्ती/समांतर कचरा संग्रह) के क्षेत्र में किए गए सभी सुधार इस एल्गोरिदम के कार्यान्वयन में सुधार हैं, लेकिन कचरा संग्रह एल्गोरिदम पर सुधार नहीं करते हैं और न ही इसकी परिभाषा में कमी "एक वस्तु की अब कोई आवश्यकता नहीं है"
मार्क और झाडू एल्गोरिदम जड़ वस्तुओं से शुरू करते हैं और लगता है सब पहुंच योग्य वस्तुओं तो, सभी गैर पहुंच योग्य लोगों को इकट्ठा तो ये ब्राउज़र नोड्स विच्छेद ठीक हो जाएगा। पुराने ब्राउज़र संदर्भ गणना का उपयोग करते हैं, जिसका अर्थ है कि ऑब्जेक्ट केवल उनके संदर्भ में एक बार एकत्र किए जाते हैं, इसलिए इस मामले में एक दोगुनी लिंक्ड सूची के चक्र समस्याग्रस्त हो जाएंगे। इसके बाद आपको लगातार नोड्स में चक्रों को किसी भी तरह से कटौती करने की आवश्यकता होगी (शून्य को संदर्भ सेट करना, कीवर्ड हटाएं, आदि)।
तो यदि आप मॉडेन ब्राउज़र के लिए विकास कर रहे हैं तो आप सभी अच्छे हैं, लेकिन यदि आप आईई 6/7 जैसे ब्राउज़रों की संगतता चाहते हैं तो आपको थोड़ी अधिक शामिल समाधान की आवश्यकता होगी (यह हमेशा तरीका है, है ना। ..)
- 1. कचरा संग्रह - रूट नोड्स
- 2. आसन्नता सूची से पेड़ बनाने का सबसे प्रभावी तरीका
- 3. संग्रह से वस्तुओं को हटाने का सबसे अच्छा तरीका
- 4. हाइबरनेट: संग्रह में तत्वों को हटाने का सबसे अच्छा तरीका
- 5. क्या यह एनएसएआरएआरई से रिक्त स्ट्रिंग को हटाने का सही और सबसे प्रभावी तरीका है?
- 6. विंडोज़ पर एक्स घंटे से अधिक पुरानी फ़ाइलों को लगातार हटाने का सबसे प्रभावी तरीका क्या है?
- 7. कचरा संग्रह और धागे
- 8. संग्रहित डेटा से जुड़ी हुई सूची बनाने का सबसे प्रभावी तरीका?
- 9. ऑर्डर को संरक्षित करते समय पाइथन सूची से डुप्लिकेट को हटाने और सबसे पुराने तत्व को हटाने के लिए सबसे प्रभावी तरीका
- 10. Magento - संग्रह गणना प्राप्त करने की सबसे प्रभावी विधि
- 11. एफपीयू स्टैक से कुछ हटाने का सबसे आसान तरीका
- 12. किसी अन्य सरणी से एक सरणी के सभी तत्वों को हटाने का सबसे प्रभावी तरीका क्या है?
- 13. तारों की पहले से क्रमबद्ध सरणी सूची में स्ट्रिंग डालने का सबसे प्रभावी तरीका क्या है?
- 14. विम का उपयोग करके मुख्य पाठ को बार-बार हटाने का सबसे प्रभावी तरीका क्या है?
- 15. कचरा संग्रह और कागो
- 16. डोम नोड्स को सॉर्ट करने का सबसे आसान तरीका?
- 17. फ़ाइल पढ़ने का सबसे प्रभावी तरीका
- 18. MongoDB: एक यादृच्छिक दस्तावेज़ से पूछने का सबसे प्रभावी तरीका क्या है?
- 19. तारों की सूची में फ़ाइल को पढ़ने का सबसे प्रभावी तरीका
- 20. कचरा संग्रह का उपयोग?
- 21. कचरा संग्रह और प्रतिबिंब
- 22. जावा संग्रह और कचरा कलेक्टर
- 23. हैश तालिका से प्रविष्टि को हटाने का सबसे अच्छा तरीका
- 24. कोर डेटा में बड़ी संख्या (10.000+) ऑब्जेक्ट्स को हटाने का सबसे प्रभावी तरीका क्या है?
- 25. जावा: रक्षात्मक रूप से एक int [] की प्रतिलिपि बनाने का सबसे प्रभावी तरीका?
- 26. पायथन कचरा संग्रह
- 27. कचरा संग्रह और स्ट्रिंग्स
- 28. पायथन में कई सबस्ट्रिंग्स में से एक को खोजने का सबसे प्रभावी तरीका क्या है?
- 29. एक सामान्य सूची से आइटम को हटाने <t>
- 30. कचरा संग्रह
धन्यवाद! साथ ही महान लिंक भी। – DudeOnRock