मेरे पास कोड उदाहरण नहीं है, लेकिन मुझे उत्सुकता है कि क्या पाइथन कोड लिखना संभव है जिसके परिणामस्वरूप अनिवार्य रूप से एक स्मृति रिसाव होता है।क्या आपके कोड के कारण पायथन में वास्तविक मेमोरी लीक हो सकती है?
उत्तर
यह संभव है, हाँ।
यह इस बात पर निर्भर करता है कि आप किस प्रकार की स्मृति रिसाव के बारे में बात कर रहे हैं। शुद्ध पायथन कोड के भीतर, सी में जैसे स्मृति को "मुक्त करना" भूलना संभव नहीं है, लेकिन कहीं भी लटकने वाला संदर्भ छोड़ना संभव है। इस तरह के कुछ उदाहरण:
एक बिना क्रिया ट्रैस बैक उद्देश्य यह है कि एक पूरी ढेर फ्रेम को जीवित रखने के है, भले ही समारोह नहीं रह गया है उदाहरण के दायरे के बजाय एक वर्ग या वैश्विक क्षेत्र में
भंडारण मूल्यों चल रहा है , और इसे महसूस नहीं कर रहा है।
कक्षाओं में चक्रीय संदर्भ जिसमें
__del__
विधि भी है। विडंबना यह है कि__del__
का अस्तित्व चक्रीय कचरा कलेक्टर के लिए एक उदाहरण को साफ करने के लिए असंभव बनाता है।खराब ढंग से कार्यान्वित सी एक्सटेंशन, या सी पुस्तकालयों का सही ढंग से उपयोग नहीं कर रहे हैं, जैसा कि उन्हें माना जाता है।
कार्यक्षेत्र जो बंदी जो भी बहुत कुछ शामिल आप
डिफ़ॉल्ट पैरामीटर जो परिवर्तनशील प्रकार के होते हैं प्रत्याशित कर सकता था की तुलना में शामिल होते हैं:
।
def foo(a=[]):
a.append(time.time())
return a
और बहुत अधिक .....
म्यूटेबल डिफ़ॉल्ट पैरामीटर का अच्छा उल्लेख। वे खतरनाक हैं क्योंकि वे जिस तरह से काम करते हैं वह वास्तव में सहज नहीं है, बल्कि इसलिए कि अगर आप देखभाल नहीं करते हैं तो वे काफी बढ़ सकते हैं ... foo विधि कार्यान्वयन का उल्लेख करने के लिए +1 –
+1। मुझे नहीं पता था! –
क्या आप अपनी पहली बुलेट पर कुछ दस्तावेज विस्तृत या प्रदान कर सकते हैं "एक अनचाहे ट्रेसबैक ऑब्जेक्ट जो पूरे स्टैक फ्रेम को जीवित रख रहा है, भले ही फ़ंक्शन अब नहीं चल रहा हो"? मेरे पास वास्तव में एक ट्रेसबैक रिसाव है लेकिन यह देखने में असफल रहा कि इसे कहीं भी संदर्भित क्यों किया जाता है (https://stackoverflow.com/questions/44681681/what-could-prevent-a-traceback-from-being-garbage-collected) – BiAiB
बेशक आप कर सकते हैं। मेमोरी रिसाव का सामान्य उदाहरण यह है कि यदि आप एक कैश बनाते हैं जिसे आपने मैन्युअल रूप से फ्लश नहीं किया है और इसमें कोई स्वचालित निष्कासन नीति नहीं है।
तकनीकी रूप से यह मेमोरी रिसाव नहीं है क्योंकि एप्लिकेशन अभी भी ** सक्षम है ** स्मृति को रिलीज़ करने के लिए सक्षम है, हालांकि यह नहीं चुनता है। – Justin
ठीक है, मुझे लगता है कि हम "स्मृति रिसाव" को अलग-अलग परिभाषित करते हैं। मेरे लिए एक रिसाव एक रिसाव है, इस पर ध्यान दिए बिना कि इसे ठीक करना संभव है या नहीं। –
यदि उसके पास कैश से तत्वों को निकालने के लिए कोड नहीं है तो यह उन्हें हटाने में सक्षम नहीं है, है ना? –
गुंजाइश से बाहर निकलने के बाद आवंटित वस्तुओं की अनाथता के अर्थ में क्योंकि आप उन्हें हटाना भूल गए, नहीं; पायथन स्वचालित रूप से स्कोप ऑब्जेक्ट्स से बाहर हो जाएगा (Garbage Collection)। लेकिन इस अर्थ में @ एन्शन के बारे में बात कर रही है, हां।
एक स्मृति रिसाव की क्लासिक परिभाषा याद है कि एक बार इस्तेमाल किया गया था, और अब नहीं है, लेकिन फिर से दावा नहीं किया गया है। शुद्ध पायथन कोड के साथ यह लगभग असंभव है। लेकिन एंटोनी बताते हैं कि, डेटा संरचनाओं को बाध्य किए बिना बढ़ने की अनुमति देकर आप आसानी से अपनी सभी मेमोरी का उपभोग करने का असर डाल सकते हैं, भले ही आपको सभी डेटा को चारों ओर रखने की आवश्यकता न हो।
सी एक्सटेंशन के साथ, निश्चित रूप से, आप अप्रबंधित क्षेत्र में वापस आ गए हैं, और कुछ भी संभव है।
- 1. पायथन - मेमोरी लीक
- 2. पायथन: मेमोरी लीक डीबगिंग
- 3. पायथन मेमोरी लीक?
- 4. पायथन - मेमोरी लीक के आसपास काम करना
- 5. क्या आप जानते हैं कि जावास्क्रिप्ट में मेमोरी लीक का कारण क्या हो सकता है?
- 6. CookieSyncManager के कारण मेमोरी लीक (गतिविधि रिसाव)?
- 7. क्या आपके पास लिस्प में हैश टेबल हो सकती है?
- 8. गोटो कारण मेमोरी लीक का उपयोग करेगा?
- 9. सेक्शन हैंडल लीक का कारण क्या हो सकता है?
- 10. क्या आपके पास बहुत अधिक संग्रहित प्रक्रियाएं हो सकती हैं?
- 11. मेमोरी मेमोरी लीक इश्यू
- 12. माइक्रोसॉफ्ट.एफएसएचआरपी.कंट्रोल.मेलबॉक्स में मेमोरी लीक?
- 13. एसबीजेसन - मेमोरी लीक है?
- 14. डेटाबेस के पायथन/डीजेगो मतदान में मेमोरी लीक
- 15. क्या जीसीसी में नकली हो सकती है?
- 16. परिपत्र संदर्भ मेमोरी लीक का कारण बनता है?
- 17. मेमोरी लीक
- 18. मेमोरी लीक
- 19. स्विग/पायथन मेमोरी लीक का पता चला
- 20. मेमोरी लीक - सिग्नल 9
- 21. क्या मेमोरी लीक के लिए स्वीकार्य सीमा है?
- 22. मेमोरी लीक
- 23. जावास्क्रिप्ट में मेमोरी लीक (क्रोम)
- 24. मेमोरी लीक
- 25. एंबेडेड आयरनपीथन मेमोरी लीक
- 26. चेकड लिस्टबॉक्स मेमोरी लीक
- 27. एकाधिक ऐप्स में मेमोरी लीक
- 28. JAXBContext.new इंस्टेंस मेमोरी लीक
- 29. एआरसी मेमोरी लीक
- 30. स्पीचसिंथेसाइज़र में लगातार मेमोरी लीक
आपको स्पष्टीकरण देना चाहिए: प्रक्रिया समाप्त होने के बाद आप लीक मेमोरी के बारे में बात कर रहे हैं; और क्या आप शुद्ध पायथन के बारे में बात कर रहे हैं जिसमें सी सी मॉड्यूल नहीं हैं? –