उबंटू में मेमोरी लीक का पता लगाना
<पी> चूंकि मेमोरी लीक का पता लगाने के लिए उपयोग किए जाने वाले उपकरण मुख्य रूप से सीएलआई प्रॉम्प्ट पर आधारित होते हैं, इससे कोई फर्क नहीं पड़ता कि आप उन्हें उबंटू के किस संस्करण पर चलाते हैं। इन्हें नियमित उबंटू में यूनिटी टर्मिनल के अंदर, उबंटू सर्वर में वर्चुअल कंसोल से, लुबंटू में एलएक्सटर्म से, कुबंटू में कोनसोल से या यहां तक कि जुबंटू में एक्सएफसीई के अंदर भी ठीक काम करना चाहिए। sudo -s जैसा सरल कार्य करने का प्रयास करें और शुरू करने के लिए अपना पासवर्ड टाइप करें। <पी> यदि इसे सही ढंग से निष्पादित किया जाता है, तो आपको एक रूट शेल मिलना चाहिए, लेकिन यदि आप एक रिसाव के साथ काम कर रहे हैं जो पहले से ही बहुत दूर चला गया है तो मेमोरी त्रुटि हो सकती है। यदि आप वास्तव में रूट शेल तक पहुंचने में सक्षम हैं, तो echo 3> /proc/sys/m/drop_caches टाइप करने का प्रयास करें, एंटर कुंजी दबाएं और फिर बाहर निकलें टाइप करें। यह देखने के लिए कि क्या इससे मेमोरी रिलीज़ करने में मदद मिली है, free या free -m फिर से चलाने का प्रयास करें। <पी> कुछ प्रोग्रामर तर्क देते हैं कि कर्नेल को अपने कैश छोड़ने के लिए मजबूर करने का कोई मतलब नहीं है, क्योंकि अतिरिक्त भौतिक मेमोरी की आवश्यकता होने पर उन्हें फ्लश किया जाना चाहिए और इस प्रकार पुनः प्राप्त किया जाना चाहिए। हालाँकि, इन कैश को बलपूर्वक फ्लश करने से सिस्टम के प्रदर्शन पर असर पड़ेगा, ध्यान रखें कि यह केवल एक परीक्षण है। एक बार जब आप सिस्टम को रीबूट कर लेते हैं, तो लिनक्स कर्नेल को एक बार फिर मेमोरी कैश को उसी तरह से इकट्ठा करना चाहिए जैसे वे पहले स्थान पर थे। <पी> कुछ लोगों ने लाइन सिंक जोड़ने का सुझाव दिया है; sudo echo 3> /proc/sys/vm/drop_caches एक ऐसी स्क्रिप्ट पर जो क्रॉन लगातार चलती है, लेकिन यह सबसे पहले मेमोरी कैशिंग के उद्देश्य को विफल कर देती है। मुफ़्त मेमोरी स्वयं केवल अप्रयुक्त रैम है, और इसका मतलब है कि डेटा को बहुत धीमी इलेक्ट्रोमैकेनिकल या NAND स्टोरेज डिवाइस से लोड किया जाना है। इससे कोई फर्क नहीं पड़ता कि ये डिवाइस कितने तेज़ हैं, वे रैम जितनी तेज़ नहीं हैं, जिसका मतलब है कि आपको मेमोरी लीक को ठीक करना चाहिए, लेकिन इष्टतम सेटिंग पर सेट होने के बाद आपको वास्तव में कैश सिस्टम से छेड़छाड़ नहीं करनी चाहिए। <पी> यदि आपने तय कर लिया है कि वास्तव में आपके पास लगातार मेमोरी लीक है जो आपकी मशीन का उपयोग करते समय समय-समय पर होता है और इसे विशेष रूप से कम नहीं किया जा सकता है, लेकिन आपके पास अभी भी सीएलआई पहुंच है, तो शीर्ष कमांड चलाने का प्रयास करें। इससे आपको चल रही प्रक्रियाओं की एक सूची मिलनी चाहिए। <पी> पी> <पी> यदि उबंटू आपको टॉप के बारे में कोई असामान्य त्रुटि देता है तो इस प्रोग्राम के और भी सरल संस्करण तक पहुंचने के लिए बिजीबॉक्स टॉप जारी करने का प्रयास करें। एक बार जब आपके पास एक सूची हो, तो यह देखने के लिए %MEM या समान कॉलम देखें कि कौन से एप्लिकेशन को सबसे अधिक मेमोरी सौंपी गई है। हालाँकि आप पीआईडी को नोट कर सकते हैं और पीआईडी की सटीक संख्या के लिए एक किल कमांड जारी कर सकते हैं, यह केवल एप्लिकेशन को बंद करने के लिए बाध्य करेगा। आपके द्वारा ऐसा करने के बाद भी उनके द्वारा उपयोग की जाने वाली मेमोरी रिलीज़ नहीं हो सकती है, हालाँकि यह निश्चित रूप से एक प्रयास के लायक है। <पी> पी> <पी> यदि आपको कोई ऐसा एप्लिकेशन मिलता है जो बड़ी मात्रा में मेमोरी का उपयोग कर रहा है, तो बाहर निकलने के लिए q दबाएं और फिर पिछली स्क्रीन से पीआईडी नंबर के साथ #### को मारने का प्रयास करें। सिस्टम प्रक्रियाओं को इस तरह से ख़त्म नहीं किया जाना चाहिए, न ही ऐसी किसी चीज़ को जिसमें आपने सहेजा नहीं है काम करना चाहिए। इसे Ctrl+Alt+Del कार्य सूची के साथ किसी चीज़ को ख़त्म करने के समान समझें, जिसका उपयोग आप इसी प्रक्रिया के लिए भी कर सकते हैं। <पी> जब आपको कोई ऐसा प्रोग्राम मिल जाए जिसमें ऐसा लगातार हो रहा है, तो आप भविष्य में इस व्यवहार को रोकने के लिए इसे कॉन्फ़िगर कर सकते हैं। निस्संदेह, प्रत्येक व्यक्तिगत प्रोग्राम को एक अलग सहारा की आवश्यकता होगी, जो केवल मेमोरी लीक का पता लगाने के कार्य से परे है। <पी> यदि आप न केवल अनुप्रयोगों का समस्या निवारण कर रहे हैं, बल्कि वास्तव में कोड के साथ भी काम कर रहे हैं तो आपके पास कुछ अन्य उपाय भी हैं। उबंटू और इसके डेरिवेटिव आपको प्रोग्रामिंग के लिए मेमबैरियर, मेम्यूजेज और मेम्यूजेजस्टेट सी रूटीन प्रदान करते हैं। <पी> पी> <पी> इन महत्वपूर्ण रूटीन पर लिनक्स प्रोग्रामर के मैनुअल पेज देखने के लिए बस मैन मेमबैरियर, मैन मेम्यूजेज या मैन मेम्यूजेजस्टैट का उपयोग करें। यदि उबंटू के नए संस्करणों के आने पर पुस्तकालयों के भविष्य के संस्करणों में उन्नयन होता है, तो परिवर्तनों को हमेशा यहां रेखांकित किया जाएगा। <पी> पी> <पी> यदि आपको ग्राफिकल सामग्री की आवश्यकता है, तो memusagestat मेमोरी उपयोग के ग्राफिकल प्रतिनिधित्व को पीएनजी फ़ाइल में सहेजने का विकल्प भी प्रदान करता है। यह इसे उपयोगिताओं के लेखकों के लिए भी एक आकर्षक सुविधा बनाता है, क्योंकि इसका उपयोग ऐसे एप्लिकेशन बनाने के लिए किया जा सकता है जो नियमित रूप से मेमोरी लीक की जांच करते हैं। <पी> पी> <पी> हो सकता है कि आप मेमप्रोफ भी स्थापित करना चाहें, जो मेमोरी लीक का पता लगाने में आपकी सहायता के लिए मेमोरी उपयोग की प्रोफाइलिंग के लिए एक उपकरण है। यह एक प्रोफ़ाइल तैयार करता है कि आप जिस प्रोग्राम को लिख रहे हैं उसमें प्रत्येक फ़ंक्शन कितनी मेमोरी आवंटित करता है। यह उन ब्लॉकों को खोजने के लिए मौजूदा मेमोरी को भी स्कैन कर सकता है, जिन्हें आवंटित किया गया है, लेकिन अब उनमें वास्तविक संदर्भ नहीं हैं। यह मानक सी लाइब्रेरी की मेमोरी आवंटन सुविधाओं को ओवरराइड करने के लिए लाइब्रेरी को प्री-लोड करके ऐसा करता है। <पी> यदि आप इसका उपयोग करने की योजना बना रहे हैं, तो इसे जारी करने से पहले अपने कोड की शुरुआत से शामिल मेमप्रोफ लाइन को हटाना सुनिश्चित करें। इसका उपयोग यह सुनिश्चित करने के लिए किया जाता है कि आपके पास कोई लीक नहीं है, लेकिन यदि आप अपना कोड पैकेज करते हैं और इसे रिपॉजिटरी में जारी करते हैं तो इसे निर्भरता नहीं बनना चाहिए। <पी> लेखक के बारे में <पी>
<पी> केविन एरो <पी> केविन एरो एक दशक से अधिक के उद्योग अनुभव के साथ एक अत्यधिक अनुभवी और जानकार प्रौद्योगिकी विशेषज्ञ हैं। उनके पास माइक्रोसॉफ्ट सर्टिफाइड टेक्नोलॉजी स्पेशलिस्ट (एमसीटीएस) प्रमाणन है और नवीनतम तकनीकी विकास के बारे में अपडेट रहने का उनमें गहरा जुनून है। केविन ने सॉफ्टवेयर विकास, साइबर सुरक्षा और क्लाउड कंप्यूटिंग जैसे क्षेत्रों में अपनी विशेषज्ञता और ज्ञान का प्रदर्शन करते हुए तकनीक से संबंधित विषयों की एक विस्तृत श्रृंखला पर विस्तार से लिखा है। तकनीकी क्षेत्र में उनके योगदान को उनके साथियों द्वारा व्यापक रूप से मान्यता और सम्मान दिया गया है, और जटिल तकनीकी अवधारणाओं को स्पष्ट और संक्षिप्त तरीके से समझाने की उनकी क्षमता के लिए उन्हें अत्यधिक सम्मानित किया जाता है। पी>