/ / क्यों FullGC भौतिक स्मृति (आरईएस) जारी नहीं कर सकता है? - जावा, कचरा-संग्रह

क्यों FullGC भौतिक स्मृति (आरईएस) जारी नहीं कर सकता है? - जावा, कचरा-संग्रह

नीचे है आरईएस विकास वक्र: यहां छवि विवरण दर्ज करें

तो है पुरानी जीन अधिभोग फ्रैक्शन: यहां छवि विवरण दर्ज करें

Jmap द्वारा पूर्ण जीसी को मजबूर करना, पुरानी जीन वास्तव में कम हो गई लेकिन आरईएस बढ़ रहा है ...

pmap परिणाम:

यहां छवि विवरण दर्ज करें

इसका मतलब क्या है शीघ्र, यह गैर ढेर स्मृति है?

संपादित करें:

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

ढेर लगभग 500 एमबी का इस्तेमाल किया जाता है, लेकिन आरएसएस 15 जीबी से अधिक है, pmap कई दिखाता है शीघ्र लगभग 65 एमबी

मेरा सवाल यह है कि ढेर के बाहर स्मृति का क्या खपत हो सकता है? धन्यवाद!

उत्तर:

उत्तर № 1 के लिए 1

ओरेकल के जेवीएम में स्मृति प्रबंधन के लिए एकाधिक एल्गोरिदम हैं। उनमें से कुछ अप्रयुक्त स्मृति पृष्ठों को ओएस में वापस कर सकते हैं, अन्य नहीं कर सकते हैं।

डिफ़ॉल्ट एल्गोरिदम (समांतर संग्राहक) कभी भी ओएस को स्मृति वापस नहीं देता है।

दो एल्गोरिदम के बाद ओएस को स्मृति वापस कर सकते हैं

  • सीरियल जीसी (सिंगल थ्रेडेड मार्क स्वीप कॉम्पैक्ट)
  • G1

आपको उपलब्ध एल्गोरिदम और संबंधित जेवीएम विकल्पों का सारांश मिल गया है यहाँ.


उत्तर № 2 के लिए 1

एनन का अर्थ क्या है, यह गैर-ढेर स्मृति है?

एनन का मतलब है कि यह किया गया है mmap()"डी के साथ MAP_ANON। आरएसएस को देखते हुए यह शायद ढेर है।

क्यों FullGC भौतिक स्मृति (आरईएस) जारी नहीं कर सकता है?

आपको अधिकतम ढेर आकार, ढेर अधिभोग और प्रतिबद्ध ढेर आकार के बीच अंतर करना होगा।

  • अधिकतम ढेर आकार पता स्थान है जो सामने आरक्षित होगा लेकिन पृष्ठों द्वारा समर्थित रूप से समर्थित नहीं है
  • प्रतिबद्ध ढेर आकार पृष्ठों द्वारा समर्थित किया जाएगा और आमतौर पर शून्य / pretouched। यह आम तौर पर आपके आरएसएस को प्रभावित करता है
  • अधिभोग वह अंश है जिसमें वास्तव में शून्य के बजाय ऑब्जेक्ट होते हैं

केवल तभी जब प्रतिबद्ध ढेर आकार पृष्ठों को नीचे चला जाता है कर सकते हैं ओएस को वापस जारी किया जाना चाहिए।

ओएस को स्मृति को कम करने / उत्पन्न करने पर जीसी एल्गोरिदम, जेवीएम संस्करण और ट्यूनिंग पैरामीटर (रोकें समय लक्ष्य, MaxHeapFreeRatio)।


आपके द्वारा सूचीबद्ध अन्य क्षेत्र शायद बाइटबफर आवंटन प्रत्यक्ष हैं लेकिन वे देशी पुस्तकालयों से अन्य आवंटन भी हो सकते हैं। के लिए एक ढेर डंप की जांच java.nio.DirectByteBuffer उदाहरणों को और अंतर्दृष्टि प्रदान करनी चाहिए।