मैं कुछ समय के लिए प्रोग्रामिंग में कुछ अजीब घटनाओं को देख रहा हूं, क्योंकि लिनक्स सिस्टम पर डिफ़ॉल्ट रूप से ओवरकॉमिट सक्षम है।इतने सारे एप्लिकेशन वर्चुअल मेमोरी को अविश्वसनीय रूप से बड़ी मात्रा में आवंटित करते समय क्यों उपयोग करते हैं?
ऐसा लगता है कि प्रत्येक उच्च स्तरीय एप्लिकेशन (उदाहरण के लिए जावा, पायथन या सी # जैसे उच्च स्तर की प्रोग्रामिंग भाषा में लिखा गया अनुप्रयोग, सी ++ में लिखे कुछ डेस्कटॉप अनुप्रयोगों सहित लिखा गया है जो कि क्यूटी जैसे बड़े पुस्तकालयों का उपयोग करते हैं) की पागल राशि का उपयोग करते हैं वर्चुअल ऑपरेटिंग मेमोरी। उदाहरण के लिए, वेब ब्राउजर के लिए केवल 300 एमबी का उपयोग करते समय 20 जीबी रैम आवंटित करना सामान्य बात है। या एक डेकटॉप पर्यावरण के लिए, mysql सर्वर, रैम के गीगाबाइट के दसियों को आवंटित करने के लिए, हर जावा या मोनो एप्लिकेशन और बहुत कुछ।
ऐसा क्यों हो रहा है? मुद्दा क्या है? क्या इसमें कोई फायदा है?
मैंने देखा कि जब मैं लिनक्स में ओवरकमिट अक्षम करता हूं, तो डेस्कटॉप सिस्टम के मामले में जो वास्तव में इन अनुप्रयोगों में से बहुत से चलाता है, सिस्टम अनुपयोगी हो जाता है क्योंकि यह ठीक से बूट नहीं होता है।
ठीक है, लेकिन जावा का उपयोग केवल लिनक्स पर नहीं किया जा रहा है। इन दिनों हर ओएस पर ओवरकॉमिट सक्षम है? यदि यह नहीं है (और मुझे संदेह है कि यह होगा) इन ओएस के लिए इन कार्यक्रमों को भी चलाने के लिए यह कैसे संभव है, जबकि यह ओवरकॉमित अक्षम के साथ लिनक्स पर संभव नहीं लगता है (मैं सचमुच ओएस को बूट नहीं कर सका मैंने ओवरकमिट को अक्षम कर दिया, स्मृति आवश्यकताएं बहुत बड़ी थीं)। – Petr
@ पीटर: "ओवरकमिट" - भौतिक स्मृति की तुलना में अधिक वर्चुअल मेमोरी गुजर रहा है - वास्तव में विंडोज और लिनक्स पर डिफ़ॉल्ट है। और यह पर्याप्त है कि कई डेवलपर्स वास्तव में बाकी कंप्यूटिंग दुनिया के बारे में परेशान न हों। ऑपरेटिंग सिस्टमों में से एक जो वर्चुअल मेमोरी "डू" नहीं करता था, उदाहरण के लिए, अमिगा ओएस 3.x - और उसने कभी जावा को "किया" नहीं था। – DevSolar