काम पर हमारे लक्षित प्लेटफार्मों में से एक संसाधन संसाधन अवरुद्ध मिनी-सर्वर चल रहा है लिनक्स (कर्नेल 2.6.13, पुराने फेडोरा कोर पर आधारित कस्टम वितरण)। एप्लिकेशन जावा में लिखा गया है (सूर्य जेडीके 1.6_04)। लिनक्स ओओएम हत्यारा प्रक्रियाओं को मारने के लिए कॉन्फ़िगर किया गया है जब स्मृति उपयोग 160 एमबी से अधिक है। यहां तक कि उच्च भार के दौरान भी हमारा आवेदन 120 एमबी से अधिक नहीं होता है और कुछ अन्य मूल प्रक्रियाओं के साथ सक्रिय होता है जो हम ओओएम सीमा के भीतर अच्छी तरह से रहते हैं।क्या स्मृति कर्नेल/libc संस्करण जावा Runtime.exec() से स्मृति के संबंध में सुरक्षित है?
हालांकि, यह पता चला है कि Java Runtime.getRuntime()। Exec() विधि, जावा से बाहरी प्रक्रियाओं को निष्पादित करने के लिए कैननिकल तरीका, particularly unfortunate implementation on Linux है जिसके कारण बच्चे की प्रक्रियाओं को अस्थायी रूप से (अस्थायी रूप से) की आवश्यकता होती है पता स्थान की प्रतिलिपि बनाने के बाद माता-पिता की मूल प्रक्रिया के रूप में स्मृति। शुद्ध परिणाम यह है कि जैसे ही हम Runtime.getRuntime() निष्पादित करते हैं, ओओएम हत्यारे द्वारा हमारे आवेदन को मार दिया जाता है।
हम वर्तमान में एक अलग देशी कार्यक्रम करके सभी बाहरी कमांड निष्पादन करते हुए इसके आसपास काम करते हैं और हम उस कार्यक्रम के साथ सॉकेट पर संवाद करते हैं। यह इष्टतम से कम है।
posting about this problem online के बाद मुझे कुछ प्रतिक्रिया मिली है कि यह लिनक्स के "नए" संस्करणों पर नहीं होना चाहिए क्योंकि वे कॉपी-ऑन-राइट का उपयोग करके पॉज़िक्स फोर्क() विधि को लागू करते हैं, संभवतः इसका अर्थ यह है कि यह केवल उन पृष्ठों की प्रतिलिपि बनाएगा जिन्हें इसकी आवश्यकता है संशोधित करें जब तुरंत पूरे पता स्थान की आवश्यकता होती है।
मेरे प्रश्न हैं:
- यह सच है?
- क्या यह कर्नेल, libc कार्यान्वयन या कहीं और पूरी तरह से कुछ है?
- फोर्क (lib) के कर्नेल/libc/जो भी कॉपी-ऑन-राइट उपलब्ध है, से कौन सा संस्करण उपलब्ध है?
यह * आभासी *, नहीं * भौतिक * स्मृति है जो कि कांटा() कॉल और निम्न निष्पादन() के बीच आवश्यक है। मुझे बहुत संदेह है कि आप अपनी भौतिक स्मृति सीमा की तुलना में पता स्थान के आकार को देखते हुए वर्चुअल मेमोरी से बाहर हो रहे हैं। –
बिल्कुल, हम भौतिक स्मृति से बाहर नहीं जा रहे हैं, लेकिन लिनक्स के कुछ हिस्से को लगता है कि हम हैं। –