] पॉइंटर्स का एक टुकड़ा संभावित रूप से मेमोरी लीक का कारण बन सकता है। यह प्रश्न मानचित्रों के लिए उस जांच का विस्तार करता है, विशेष रूप से कि क्या एक मानचित्र से एक प्रविष्टि को हटाने वाले पॉइंटर्स से प्रविष्टि को हटाने से समान व्यवहार होता है। आइए गो के रनटाइम में मैप डिलीट के लिए स्रोत कोड की जांच करें: रनटाइम/हैशमैप.गो (फ़ंक्शन मैपडेल्ट ())। परीक्षा से पता चलता है कि कुंजी और मूल्य दोनों को हटाने पर मंजूरी दे दी जाती है ( #600, #602)। नुकीली वस्तुएं। यह सुनिश्चित करता है कि भले ही मूल्य स्वयं बिंदु हो सकते हैं, लेकिन नक्शा अब उनका संदर्भ नहीं देता है। नतीजतन, नुकीली वस्तुएं कचरा संग्रह के लिए पात्र हो जाती हैं यदि उनके पास कोई अन्य संदर्भ नहीं है।
टाइप पॉइंट स्ट्रक्चर {
X, y int
}
var m = मानचित्र [int]*बिंदु {}
func मुख्य () {
fillmap ()
हटाएं (एम, 1)
runtime.gc ()
time.sleep (time.second)
fmt.println (m)
}
func fillmap () {
p: = & amp; बिंदु {1, 2}
runtime.setFinaizer (p, func (p *बिंदु) {
fmt.printf ("अंतिम रूप से: % p % v \ n", p, p)
})
एम [1] = पी
fmt.printf ("मानचित्र में पुट: % p % v \ n", p, p)
} आउटपुट:
इस उदाहरण में, पॉइंटर मान (p) को मानचित्र में डाल दिया गया है और एक फाइनलर को कचरा संग्रह पर बुलाया जाना है। मानचित्र से प्रविष्टि को हटाने और कचरा संग्रह के लिए मजबूर करने के बाद, फाइनलर को लागू किया जाता है, यह साबित करते हुए कि पॉइंटर को वास्तव में मानचित्र से हटा दिया गया था।
निष्कर्ष: विश्लेषण और व्यावहारिक उदाहरण, हम यह निष्कर्ष निकाल सकते हैं कि पॉइंटर्स के एक नक्शे से प्रविष्टि को हटाने से नहीं मेमोरी लीक का कारण नहीं है। गो रनटाइम साफ मानों को शून्य करके उचित कचरा संग्रह सुनिश्चित करता है, जिससे नुकीली वस्तुओं को पुनः प्राप्त किया जा सकता है जब कोई अन्य संदर्भ मौजूद नहीं है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3