Computer >> कंप्यूटर ट्यूटोरियल >  >> समस्या निवारण >> Linux

उबंटू पर मेमोरी लीक का पता लगाना और उसे ठीक करना:एक चरण-दर-चरण मार्गदर्शिका

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

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

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

<पी> चूंकि मेमोरी लीक का पता लगाने के लिए उपयोग किए जाने वाले उपकरण मुख्य रूप से सीएलआई प्रॉम्प्ट पर आधारित होते हैं, इससे कोई फर्क नहीं पड़ता कि आप उन्हें उबंटू के किस संस्करण पर चलाते हैं। इन्हें नियमित उबंटू में यूनिटी टर्मिनल के अंदर, उबंटू सर्वर में वर्चुअल कंसोल से, लुबंटू में एलएक्सटर्म से, कुबंटू में कोनसोल से या यहां तक ​​​​कि जुबंटू में एक्सएफसीई के अंदर भी ठीक काम करना चाहिए। 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 मेमोरी उपयोग के ग्राफिकल प्रतिनिधित्व को पीएनजी फ़ाइल में सहेजने का विकल्प भी प्रदान करता है। यह इसे उपयोगिताओं के लेखकों के लिए भी एक आकर्षक सुविधा बनाता है, क्योंकि इसका उपयोग ऐसे एप्लिकेशन बनाने के लिए किया जा सकता है जो नियमित रूप से मेमोरी लीक की जांच करते हैं।

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

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

<पी> लेखक के बारे में

<पी> उबंटू पर मेमोरी लीक का पता लगाना और उसे ठीक करना:एक चरण-दर-चरण मार्गदर्शिका

<पी> केविन एरो

<पी> केविन एरो एक दशक से अधिक के उद्योग अनुभव के साथ एक अत्यधिक अनुभवी और जानकार प्रौद्योगिकी विशेषज्ञ हैं। उनके पास माइक्रोसॉफ्ट सर्टिफाइड टेक्नोलॉजी स्पेशलिस्ट (एमसीटीएस) प्रमाणन है और नवीनतम तकनीकी विकास के बारे में अपडेट रहने का उनमें गहरा जुनून है। केविन ने सॉफ्टवेयर विकास, साइबर सुरक्षा और क्लाउड कंप्यूटिंग जैसे क्षेत्रों में अपनी विशेषज्ञता और ज्ञान का प्रदर्शन करते हुए तकनीक से संबंधित विषयों की एक विस्तृत श्रृंखला पर विस्तार से लिखा है। तकनीकी क्षेत्र में उनके योगदान को उनके साथियों द्वारा व्यापक रूप से मान्यता और सम्मान दिया गया है, और जटिल तकनीकी अवधारणाओं को स्पष्ट और संक्षिप्त तरीके से समझाने की उनकी क्षमता के लिए उन्हें अत्यधिक सम्मानित किया जाता है।
  1. ऐप्स को विंडोज 10 पर बैकग्राउंड में चलने से रोकें ऐप्स को विंडोज 10 पर बैकग्राउंड में चलने से रोकें

    आपका Windows OS कुछ ऐप्स और प्रक्रियाओं को आपके द्वारा ऐप को छुए बिना भी बैकग्राउंड में चलने देता है। आपका ऑपरेटिंग सिस्टम सिस्टम के प्रदर्शन को बेहतर बनाने के लिए ऐसा करता है। ऐसे कई ऐप हैं, और वे आपकी जानकारी के बिना चलते हैं। हालांकि आपके ओएस की यह सुविधा आपके सिस्टम के प्रदर्शन के लिए उपयोगी हो

  1. हल किया गया:त्रुटि 0x80004005 को कैसे ठीक करें हल किया गया:त्रुटि 0x80004005 को कैसे ठीक करें

    त्रुटि 0x80004005 को एक अनिर्दिष्ट त्रुटि के रूप में अनुवादित किया जाता है और आमतौर पर तब देखा जाता है जब उपयोगकर्ता साझा किए गए फ़ोल्डर, ड्राइव, वर्चुअल मशीन, Microsoft खाता परिवर्तन, और विंडोज अपडेट स्थापित करने में विफल होने पर भी एक्सेस नहीं कर सकता है। इस समस्या का निवारण इस बात पर निर्भर करता

  1. फिक्स:win32kfull.sys बीएसओडी फिक्स:win32kfull.sys बीएसओडी

    फ़ाइल win32kfull.sys आपके ऑपरेटिंग सिस्टम में मौजूद कर्नेल-मोड डिवाइस ड्राइवरों में से एक है। डिवाइस ड्राइवर दो प्रकार के होते हैं, एक सामान्य ड्राइवर होता है जो आपके हार्डवेयर और OS के बीच संचार करता है और दूसरा कर्नेल-मोड ड्राइवर होता है। वे ऑपरेटिंग सिस्टम को बूट करने के लिए आवश्यक हैं। win32kful