मेरे पास एक पायथन प्रोग्राम है जो प्रयोगों की एक श्रृंखला चलाता है, जिसमें किसी भी डेटा से एक परीक्षण से दूसरे डेटा को संग्रहीत करने का इरादा नहीं होता है। मेरे कोड में एक स्मृति रिसाव है जिसे मैं पूरी तरह से ढूंढने में असमर्थ हूं (मैंने मेमोरी लीक पर other threads को देखा है)। समय की बाधाओं के कारण, मुझे रिसाव को छोड़ना पड़ा, लेकिन अगर मैं प्रत्येक प्रयोग को अलग करने में सक्षम था, तो प्रोग्राम शायद मुझे आवश्यक परिणामों का उत्पादन करने के लिए काफी देर तक चलाएगा।पायथन - मेमोरी लीक के आसपास काम करना
- प्रत्येक परीक्षण को एक अलग थ्रेड सहायता में चलाना होगा?
- क्या रिसाव के प्रभाव को अलग करने के कोई अन्य तरीके हैं? एक प्रयोग के धावक और वास्तविक प्रयोग कोड: विशिष्ट स्थिति पर
विस्तार
- मेरे कोड के दो भाग हैं।
- हालांकि सभी प्रयोगों और प्रत्येक प्रयोग द्वारा उपयोग किए जाने वाले कोड को चलाने के लिए कोड के बीच कोई ग्लोबल साझा नहीं किया जाता है, कुछ वर्ग/फ़ंक्शंस जरूरी रूप से साझा किए जाते हैं।
- प्रयोग धावक लूप के लिए बस इतना आसान नहीं है जिसे आसानी से शेल स्क्रिप्ट में रखा जा सकता है। यह पहले उन परीक्षणों पर निर्णय लेता है जिन्हें कॉन्फ़िगरेशन पैरामीटर दिए जाने की आवश्यकता होती है, फिर परीक्षण चलाते हैं और डेटा को किसी विशेष तरीके से आउटपुट करते हैं।
- मैं मैन्युअल रूप से कचरा कलेक्टर मामले में इस मुद्दे को केवल कि कचरा संग्रहण नहीं किया जा रहा था रन था बुला कोशिश की, लेकिन इस
अद्यतन
Gnibbler का जवाब वास्तव में मुझे अनुमति दी गई है करने के लिए काम नहीं किया पता लगाएं कि मेरी क्लोजेनेस कैलकुलेशन ऑब्जेक्ट्स जो स्टोर करती हैं, प्रत्येक गणना के दौरान उपयोग किए गए डेटा के सभी को मार नहीं किया जा रहा है। मैंने तब कुछ लिंक को मैन्युअल रूप से हटाने के लिए उपयोग किया जो कि स्मृति समस्याओं को ठीक करता है।
पायथन में "मेमोरी लीक" परिभाषित करें। – hasen
मेरा मतलब है, आप किसी भी स्मृति को मुक्त करने के लिए संभवतः "भूल" नहीं सकते; यह जीसीड है। – hasen
आप कैसे बता सकते हैं कि आपके पास मेमोरी रिसाव है? क्या यह है कि आपकी प्रक्रिया मेमोरी एक बड़े आकार में बढ़ती है, और कभी घटती नहीं है? यदि ऐसा है, तो सलाह दीजिये कि पायथन आवश्यक रूप से ओएस को स्मृति वापस नहीं लौटाता क्योंकि यह अब इसका उपयोग नहीं कर रहा है। –