Ubuntu में एक मेमोरी लीक का पता लगाने के लिए कैसे



समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें

उबंटू में मेमोरी लीक होने के कई कारण हो सकते हैं, लेकिन सौभाग्य से, ऐसा होने पर यह स्पष्ट है। बग्गी कोड अक्सर सबसे बड़ा कारण होता है, क्योंकि प्रोग्रामरों को यह सुनिश्चित करने के लिए जांचने का अवसर नहीं मिला होगा कि स्मृति को अब रिलीज़ होने की आवश्यकता नहीं है। यदि आप स्रोत से अस्थिर पैकेज या संकलन कोड स्थापित कर रहे हैं, तो आप इस कारण से मेमोरी लीक से निपट सकते हैं। आप शायद उन्हें नोटिस करना शुरू कर देंगे क्योंकि सॉफ़्टवेयर एप्लिकेशन पैकेज स्मृति से बाहर होने के बारे में शिकायत करना शुरू करते हैं जब आपके पास पर्याप्त से अधिक भौतिक रैम स्थापित हो।



यदि आप मेमोरी रिसाव के बारे में चिंतित हैं, तो टर्मिनल में बार-बार मुफ्त टाइप करने का प्रयास करें। यदि आपको अचानक RAM का उपयोग तेजी से बढ़ता हुआ दिखाई देने लगता है, तो आपको पहले से ही मेमोरी रिसाव का पता चल जाता है। क्या आपको कोई ऐसी त्रुटि प्राप्त होनी चाहिए, जो bash जैसी किसी चीज़ को पढ़ती है: ऐसा करते समय पर्याप्त मेमोरी नहीं है और आपके पास टर्मिनल या यहां तक ​​कि सिर्फ एक वर्चुअल कंसोल खुला होने के अलावा कुछ नहीं है, तो आप लगभग एक के साथ निर्विवाद रूप से व्यवहार कर रहे हैं। कुछ मेमोरी लीक्स थोड़े सबटॉलर हो सकते हैं, लेकिन उबंटू और इसके विभिन्न स्पिन-ऑफ में फीचर टूल और पैकेज हैं जो आपको इनका पता लगाने में मदद कर सकते हैं।



उबंटू में मेमोरी लीक्स का पता लगाना

चूंकि मेमोरी लीक का पता लगाने के लिए उपयोग किए जाने वाले उपकरण मुख्य रूप से सीएलआई प्रॉम्प्ट के आसपास आधारित हैं, इसलिए यह महत्वपूर्ण नहीं है कि आप उबंटू के किस संस्करण को चलाते हैं। ये उबुन्टु सर्वर में एक वर्चुअल कंसोल से, ल्यूबुन्टू में एक लक्सटर से, कुबंटू में एक कंसोल और यहां तक ​​कि जुबांट में एक्सफ़स के अंदर एक नियमित टर्मिनल के अंदर एक एकता टर्मिनल के अंदर ठीक काम करना चाहिए। Sudo -s जैसे सरल कार्य करने का प्रयास करें और शुरू करने के लिए अपना पासवर्ड टाइप करें।



यदि आपको सही तरीके से प्रदर्शन किया गया है, तो आपको एक रूट शेल प्राप्त करना चाहिए, लेकिन यदि आप पहले ही बहुत दूर जा चुके रिसाव के साथ काम कर रहे हैं, तो स्मृति त्रुटि हो सकती है। यदि आप वास्तव में रूट शेल एक्सेस करने में सक्षम हैं, तो इको 3> / proc / sys / m / drop_caches टाइप करने का प्रयास करें, एंटर कुंजी दबाएं और फिर बाहर निकलें टाइप करें। यह देखने के लिए कि क्या स्मृति को रिलीज़ करने में मदद मिली है, फिर से मुफ्त या मुफ्त-एम चलाने की कोशिश करें

कुछ प्रोग्रामर का तर्क है कि कर्नेल को अपने कैश को बाहर निकालने के लिए मजबूर करने का कोई मतलब नहीं है, क्योंकि उन्हें अतिरिक्त रूप से फ्लश किया जाना चाहिए और जैसे ही अतिरिक्त भौतिक मेमोरी की आवश्यकता होती है, उन्हें पुनः प्राप्त किया जाएगा। हालांकि, इन कैश को फ्लश करने के दौरान सिस्टम के प्रदर्शन को नुकसान होगा, यह ध्यान रखें कि यह केवल एक परीक्षण है। एक बार जब आप सिस्टम को रिबूट कर देते हैं, तो लिनक्स कर्नेल को एक बार फिर मेमोरी कैश को इकट्ठा करना चाहिए जिस तरह से वे पहले स्थान पर थे।

कुछ लोगों ने लाइन सिंक को जोड़ने का सुझाव दिया है; sudo echo 3> / proc / sys / vm / drop_caches एक स्क्रिप्ट के लिए जो क्रोन लगातार चलता है, लेकिन यह पहली जगह में मेमोरी कैशिंग के उद्देश्य को पराजित करता है। नि: शुल्क मेमोरी केवल अप्रयुक्त रैम है, और इसका मतलब है कि डेटा को बहुत धीमे से लोड किया जाना हैविद्युत या नंद भंडारण उपकरण। कोई फर्क नहीं पड़ता कि ये उपकरण कितने तेज़ हैं, वे रैम जितनी तेज़ नहीं हैं, इसका मतलब है कि जब आपको मेमोरी लीक को ठीक करना चाहिए, तो आपको वास्तव में कैश सिस्टम के साथ छेड़छाड़ नहीं करनी चाहिए, क्योंकि आपके पास यह इष्टतम सेटिंग के लिए सेट है।



यदि आपने तय किया है कि आपके पास लगातार मेमोरी लीक है जो समय-समय पर आपकी मशीन का उपयोग करता है और इसे विशेष रूप से कम नहीं किया जा सकता है, लेकिन आपके पास अभी भी सीएलआई पहुंच है, तो शीर्ष कमांड चलाने का प्रयास करें। इससे आपको चलने वाली प्रक्रियाओं की सूची मिलनी चाहिए।

क्या उबंटू आपको शीर्ष के बारे में एक असामान्य त्रुटि देनी चाहिए, फिर इस कार्यक्रम के और भी सरल संस्करण तक पहुंचने के लिए व्यस्त बॉक्स जारी करने की कोशिश करें। आपके पास एक सूची होने के बाद, यह देखने के लिए कि कौन से एप्लिकेशन को सबसे अधिक मेमोरी असाइन की गई है,% MEM या समान कॉलम देखें। जब आप पीआईडी ​​को नोट कर सकते हैं और पीआईडी ​​की सटीक संख्या के लिए एक किल कमांड जारी कर सकते हैं, तो यह एप्लिकेशन को बंद करने के लिए मजबूर करेगा। आपके द्वारा ऐसा किए जाने के बाद भी वे जिस मेमोरी का उपयोग करते हैं, वह अभी भी जारी नहीं की जा सकती है।

यदि आपको कोई ऐसा एप्लिकेशन मिलता है जो बड़ी मात्रा में मेमोरी का उपयोग कर रहा है, तो q को छोड़ने के लिए पुश करें और फिर पिछली स्क्रीन से PID नंबर के साथ #### को मारने का प्रयास करें। सिस्टम प्रक्रियाओं को इस तरह से नहीं मारना चाहिए, और न ही ऐसा कुछ भी होना चाहिए, जिसमें आपने बिना काम के काम किया हो। इस तरह से सोचें कि Ctrl + Alt + Del कार्य सूची के साथ किसी चीज को मारने के लिए, जिसका उपयोग आप इसी प्रक्रिया के लिए भी कर सकते हैं।

जब आपको कोई ऐसा प्रोग्राम मिल गया है जो यह लगातार हो रहा है, तो आप भविष्य में व्यवहार को रोकने के लिए इसे कॉन्फ़िगर कर सकते हैं। प्रत्येक व्यक्तिगत कार्यक्रम, निश्चित रूप से, एक अलग सहारा की आवश्यकता होगी, जो कि केवल मेमोरी लीक का पता लगाने के कार्य से परे है।

क्या आपको केवल आवेदनों का निवारण नहीं करना चाहिए, बल्कि वास्तव में कोड के साथ काम करना चाहिए फिर आपके पास कुछ अन्य पुनरावर्ती हैं। उबंटू और इसके डेरिवेटिव आपको प्रोग्रामिंग के लिए कंसीलर, मेम्बेज और मेमूसैगस्टैट सी रूटीन प्रदान करते हैं।

लिनक्स प्रोग्रामर के मैनुअल पेजों को इन महत्वपूर्ण रूटीन पर देखने के लिए बस मैन मेमब्रियर, मैन मेम्यूज या मैन मेम्यूजैस्टैट का उपयोग करें। यदि उबंटू के नए संस्करणों के रूप में पुस्तकालयों के भविष्य के संस्करणों में उन्नयन होता है, तो परिवर्तन हमेशा यहां बताए जाएंगे।

यदि आपको ग्राफ़िकल सामग्री की आवश्यकता है, तो मेमूसैगैस्टेट भी पीएनजी फ़ाइल में मेमोरी उपयोग के चित्रमय प्रतिनिधित्व को बचाने का विकल्प प्रदान करता है। यह उपयोगिताओं के लेखकों के लिए भी एक आकर्षक विशेषता है, क्योंकि इसका उपयोग उन अनुप्रयोगों को बनाने के लिए किया जा सकता है जो नियमित रूप से मेमोरी लीक की जांच करते हैं।

आप मेमरी स्थापित करने की भी इच्छा कर सकते हैं, जो मेमोरी लीक को कम करने के लिए आपकी मदद करने के लिए मेमोरी के उपयोग के लिए एक उपकरण है। यह आपके द्वारा लिखी गई प्रोग्राम के प्रत्येक फ़ंक्शन को कितनी मेमोरी आवंटित करता है, इसके बारे में एक प्रोफ़ाइल बनाता है। यह ब्लॉकों को खोजने के लिए मौजूदा मेमोरी को भी स्कैन कर सकता है, जिन्हें आवंटित किया गया है, लेकिन अब वास्तविक संदर्भ नहीं हैं। यह मानक C लाइब्रेरी की मेमोरी आवंटन सुविधाओं को ओवरराइड करने के लिए लाइब्रेरी को प्री-लोड करके करता है।

यदि आप इसका उपयोग करने की योजना बनाते हैं, तो इसे जारी करने से पहले अपने कोड की शुरुआत से शामिल यादगार लाइन को निकालना सुनिश्चित करें। इसका उपयोग यह सुनिश्चित करने के लिए किया जाता है कि आपके पास कोई लीक नहीं है, लेकिन यह निर्भरता नहीं बनती अगर आप अपने कोड को पैकेज करते हैं और इसे एक रिपॉजिटरी में जारी करते हैं।

4 मिनट पढ़ा