अन्य उत्तरों के अलावा, आप किसी भी आवंटित मेमोरी के लिए बैकिंग की आवश्यकता के लिए लिनक्स को कॉन्फ़िगर कर सकते हैं, भले ही प्रोग्राम इसका उपयोग न करें।
हालाँकि, स्मृति को ओवरकम करना और OOM किलर से डरना लिनक्स अनुभव के आवश्यक अंग नहीं हैं। बस sysctl पैरामीटर vm / overcommit_memory को 2 पर सेट करने से ओवरकॉमी व्यवहार बंद हो जाता है और OOM किलर को हमेशा के लिए बंद कर देता है। अधिकांश स्थितियों के लिए पर्याप्त स्वैप फ़ाइल प्रदान करने के लिए अधिकांश आधुनिक सिस्टम में पर्याप्त डिस्क स्थान होना चाहिए। जब पालतू स्मृति समाप्त हो जाती है तो पालतू प्रक्रियाओं को मारने से रोकने की कोशिश करने के बजाय, यह पूरी तरह से स्थिति से बचने के लिए आसान हो सकता है। [ OOM हत्यारे से छुटकारा ]
यदि कोई प्रोग्राम मेमोरी आवंटित करता है, तो कर्नेल बस स्वैप के अधिक पन्नों को चिह्नित कर सकता है। यह संकेत कर्नेल की मेमोरी मैनेजर में संग्रहीत है, वास्तविक डिस्क स्थान अभी तक छुआ नहीं गया है। जब तक उस मेमोरी का उपयोग नहीं किया जाता है, तब तक कुछ भी वास्तव में अंदर और बाहर स्वैप नहीं किया जाता है। यदि उनका उपयोग कभी नहीं किया जाता है, तो प्रदर्शन को प्रभावित किए बिना स्वैप उपयोग में उतार-चढ़ाव होगा।
क्योंकि प्रक्रियाओं को अपने स्वयं के पते के स्थान या "दृश्य" के साथ प्रस्तुत किया जाता है (यह पहली जगह में स्वैप कैसे काम करता है), कर्नेल में बहुत सारे रास्ते हैं जो इसे प्रबंधित करता है। उपरोक्त लिंक किए गए लेख से भी एक कांटा उदाहरण का उपयोग करना, क्योंकि यह स्मृति पृष्ठों को साझा करने की तुलना में बहुत अधिक होने की संभावना है, क्योंकि यह अप्रयुक्त स्मृति की एक बड़ी मात्रा को नए सिरे से आवंटित करने के लिए है, मेमोरी को कॉपी-ऑन-राइट पर आवंटित किया जा सकता है, जिससे स्वैप उपयोग की संख्या बढ़ जाती है। जब इसे वास्तव में लिखा जाता है (जो कि नहीं हो सकता है), तो उस "प्रतिबद्ध स्वैप" को किसी भी अप्रयुक्त रैम (तब रैम का उपयोग बढ़ाना और स्वैप का उपयोग कम करना) से बदला जा सकता है। 500MB आबंटित एक प्रक्रिया की कल्पना करें जो एक मशीन पर सभी या लगभग सभी रैम के उपयोग में है। यदि स्वैप में 500MB उपलब्ध है (और डिस्क स्थान सस्ता है, तो आज की टीबी ड्राइव का 1% कितना बड़ा है ?: पी), किसी भी मेमोरी को कॉपी नहीं करना है (अभी तक)
इस प्रकार ओओएम हत्यारे की संभावना से बचा जाता है, और यह बहुत आसान है कि अधिकांश सॉफ्टवेयर को इस धारणा के साथ डिज़ाइन किया जाए कि स्मृति आवंटन (कांटे जैसी चीज़ के माध्यम से "अंतर्निहित" आवंटन या तो सफल होते हैं या तुरंत विफल हो जाते हैं, व्यावहारिक बोध के साथ कि अगर होना चाहिए अदला-बदली हुई तो प्रदर्शन पर असर पड़ सकता है। यह प्रभाव लगभग हमेशा मामूली होता है, लेकिन सबसे बुरी स्थिति में स्वैप थ्रैशिंग होता है (अभी भी कभी-कभी एक बाहरी कर्नेल दुर्घटना या ओओएम हत्यारा के लिए बेहतर होता है)।
हालाँकि मुझे पता नहीं है कि लिनक्स मेमोरी मैनेजर कैसे काम करता है, इस बारे में सटीक जानकारी नहीं है, लेकिन यह जवाब मेरी अपनी सामान्यीकृत समझ है और जो मुझे वर्षों से पढ़ना याद है। मैंने इस उत्तर को फिर से संपादित करने की कोशिश की है, इसलिए ओएस डिजाइन की न्यूनतम समझ आवश्यक है (यह काफी जटिल है और कुछ ऐसा नहीं है जिसे मैं अपने आप में बहुत दिलचस्पी रखता हूं), लेकिन यह थोड़ा सा लगता है; कृपया मुझे बताएं कि क्या आप देखते हैं कि इसमें सुधार कैसे किया जा सकता है। मनोरंजक हाथ पर, यह इतना शर्मनाक बुनियादी सवाल नहीं हो सकता है।