2011-05-16 12 views
16

मेरे पास ओएसजीआई मेमोरी प्रबंधन के बारे में सैद्धांतिक सवाल है।ओएसजीआई मेमोरी प्रबंधन

मान लें कि हमारे पास कुछ ओएसजीआई कंटेनर है (उदाहरण के लिए फ़ेलिक्स), और मान लीजिए कि मैंने मेमोरी लीक के साथ कुछ बंडल बनाया है।

  1. वहाँ इस "विफलता" बंडल के लिए स्मृति खपत सीमित करने के लिए कोई तरीका है:

    और यहाँ कुछ सवाल है कि मेरे पास है कर रहे हैं? उदाहरण के लिए यदि यह मेमोरी सीमा से अधिक है - ओएसजीआई कंटेनर मुझे एक ईमेल भेजें, इसे अनइंस्टॉल करें या कुछ और?

  2. मेमोरी खपत बंडल "ए" बंडल को प्रभावित करता है "बी"। उदाहरण के लिए यदि "ए" मेमोरी त्रुटि से बाहर निकलता है तो क्या यह पूरे ओएसजीआई कंटेनर को उड़ा देगा?

उत्तर

18

पूर्ण ओएसजीआई फ्रेमवर्क एक वर्चुअल मशीन में चलता है। केवल प्रत्येक बंडल को एक अलग क्लासलोडर द्वारा लोड किया जाता है। लेकिन सभी बंडल एक ही ढेर साझा करते हैं और यदि एक बंडल स्मृति को रिसाव करता है, तो यह पूरे ओएसजीआई आधारित अनुप्रयोग को प्रभावित करता है।

तो हाँ, अगर आउटडोफमेरी एरर एक बंडल के कारण होता है, तो संपूर्ण कंटेनर "उड़ा हुआ" होता है।

(BTW: यदि किसी ने आपके कंटेनर में एक बंडल है कि एक System.exit() करता चला जाता है, तो फिर पूरे कंटेनर एक चेतावनी के बिना बंद कर दिया जाता है - बंडलों कुछ "एक JVM अंदर आभासी मशीनों" की तरह अलग संदर्भों में नहीं रहते)

+0

+1: ओएसजीआई फ्रेमवर्क की अनुमति परत को आपको सिस्टम.एक्सिट() 'जैसी विधियों के लिए अपमानजनक कॉल के खिलाफ सुरक्षा करनी चाहिए। –

+0

धन्यवाद एंड्रियास, जो मेरे प्रश्न का उत्तर देता है। – altanis

+0

एंड्रियास, आपने सवालों का जवाब नहीं दिया है 1 - क्या आपको पता है कि बंडल की स्मृति को सीमित करने का कोई तरीका है या नहीं? –

संबंधित मुद्दे