2011-01-07 12 views
12

मेरे पास एक ऐसा एप्लिकेशन है जो कुछ प्रक्रियाओं के लिए अस्थायी रूप से स्मृति/ढेर की कुछ निश्चित मात्रा की आवश्यकता है। विकल्प के रूप में JVM को अधिकतम ढेर आकार के उचित मूल्य को देखते हुए, JVM थोड़ा ढेर से शुरू होता है और मांग पर ओएस से अधिक मेमोरी का अनुरोध करता है।क्या JVM अब ओएस को मुफ्त मेमोरी देता है जब अब आवश्यकता नहीं होती है?

मेरा सवाल यह है कि, अगर अतिरिक्त मेमोरी को ओएस को जेवीएम द्वारा वापस दिया जाएगा (उदाहरण के लिए अन्य प्रक्रियाओं के लिए) जब मेरे आवेदन द्वारा अब और अधिक स्मृति की आवश्यकता नहीं है। वर्तमान में मेरा आवेदन उस स्मृति को हमेशा के लिए पकड़ता प्रतीत होता है, भले ही इसकी आवश्यकता न हो।

+0

_no_ "JVM" है, आपको यह निर्दिष्ट करना चाहिए कि आप किस कार्यान्वयन में रुचि रखते हैं। – paxdiablo

+0

2 9 प्रश्न, केवल एक ही स्वीकृत उत्तर। पूरा करने के लिए होमवर्क है। गंभीरता से। –

उत्तर

22

जेवीएम ओएस को मेमोरी लौटाता है, लेकिन केवल बहुत ही अनिच्छा से, क्योंकि इसे जल्द ही इसकी आवश्यकता हो सकती है, और ओएस से मेमोरी प्राप्त करना अपेक्षाकृत महंगा ऑपरेशन है।

आप JVM अधिक उत्सुकता से ओएस के लिए स्मृति वापस करना चाहते हैं, तो आप tuning parameters of the Oracle JVM उपयोग कर सकते हैं, विशेष रूप से -XX:MaxHeapFreeRatio और -XX:MinHeapFreeRatio

3

आवश्यक नहीं है। यह आपके द्वारा उपयोग किए जाने वाले जेवीएम पर निर्भर करता है। मैं आईबीएम के जेवीएम के साथ एक मामले के बारे में जानता हूं। हमें एक प्रोग्राम के साथ भी एक समस्या थी जिसमें स्मृति को मुक्त नहीं किया गया था, भले ही इसकी आवश्यकता न हो। कुछ जानकारी IBM's site पर मिल सकती है।

0

यह वास्तव में संस्करण पर और चयनित कचरा कलेक्टरों पर निर्भर करता है। मैंने पाया कि जावा 1.8.0_73 कभी-कभी ओएस को डिफ़ॉल्ट रूप से छोटी मात्रा में रिलीज़ करता है। जेवीएम पैरामीटर को समायोजित किए बिना मुझे यह सबसे पुराना संस्करण याद है, लेकिन यह पहले के लिए बहुत अच्छी तरह से लागू हो सकता है, मुझे एक सटीक संस्करण नहीं पता है।

जब तक पैरामीटर समायोजित नहीं किए जाते हैं, डिफ़ॉल्ट रूप से यह तब तक कुछ भी जारी नहीं करेगा जब तक कि आपके ढेर का 60-70% उपयोग नहीं किया जाता है।

यहां एक प्रदर्शन विचार झूठ बोल सकता है - जावा की धीमी गति के लिए प्रतिष्ठा थी, इसलिए डिफ़ॉल्ट रूप से जेवीएम ओएस से आवंटन को कम करने और कचरा संग्रहण को जितना कुशल बना सकता है उतना मेमोरी और इसे कम बार करना।

मुझे आश्चर्य है कि अगर ओएस अपेक्षाकृत कम मुक्त स्मृति शेष है तो यह स्मृति के साथ कम कठोर हो सकता है ..?

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