7.1* सही गारबेज कलेक्टर का चुनाव कैसे करें

यदि आपके आवेदन में सख्त विलंबता आवश्यकताएं नहीं हैं, तो आपको केवल आवेदन चलाना चाहिए और जेवीएम को स्वयं सही संग्राहक चुनने देना चाहिए।

ज्यादातर मामलों में, डिफ़ॉल्ट सेटिंग्स ठीक काम करती हैं। यदि आवश्यक हो, तो आप प्रदर्शन को बेहतर बनाने के लिए ढेर के आकार को समायोजित कर सकते हैं। यदि प्रदर्शन अभी भी अपेक्षित नहीं है, तो कलेक्टर को अपने आवेदन की आवश्यकताओं के अनुरूप संशोधित करने का प्रयास करें।

  • अनुक्रमिक । यदि एप्लिकेशन के पास एक छोटा डेटा सेट (लगभग 100 एमबी तक) है और/या यह बिना किसी विलंबता आवश्यकताओं के एकल प्रोसेसर पर चलेगा।
  • समानांतर । यदि प्राथमिकता अनुप्रयोग शिखर प्रदर्शन है और कोई विलंबता आवश्यकताएं नहीं हैं (या एक सेकंड या अधिक के विराम स्वीकार्य हैं)।
  • सीएमएस/G1 . यदि प्रतिक्रिया समय समग्र थ्रूपुट से अधिक महत्वपूर्ण है, और कचरा संग्रहण विराम एक सेकंड से कम होना चाहिए।
  • जेडजीसी । यदि प्रतिक्रिया समय उच्च प्राथमिकता है और/या बहुत बड़ा ढेर शामिल है।

7.2* कचरा संग्रहण के लिए अनुशंसाएँ

मैन्युअल ट्रिगर्स से बचें

कचरा संग्रह के बुनियादी तंत्र के अलावा, जावा में इस प्रक्रिया के बारे में सबसे महत्वपूर्ण बिंदुओं में से एक यह है कि यह गैर-नियतात्मक है। यानी, यह भविष्यवाणी करना असंभव है कि वास्तव में रन टाइम पर यह कब होगा।

System.gc() या Runtime.gc() विधियों का उपयोग करके, आप कचरा संग्रहकर्ता शुरू करने के लिए अपने कोड में एक संकेत शामिल कर सकते हैं, लेकिन यह गारंटी नहीं देता है कि यह वास्तव में चलेगा।

विश्लेषण उपकरण का प्रयोग करें

यदि आपके पास अपने एप्लिकेशन को चलाने के लिए पर्याप्त मेमोरी नहीं है, तो आप स्लोडाउन, लंबे कचरा संग्रह समय, "वर्ल्ड स्टॉप" इवेंट और अंततः आउट-ऑफ-मेमोरी त्रुटियों का अनुभव करेंगे। यह संकेत दे सकता है कि हीप बहुत छोटा है, लेकिन यह यह भी संकेत दे सकता है कि एप्लिकेशन में मेमोरी लीक है।

यह देखने के लिए कि क्या ढेर का उपयोग अनिश्चित काल तक बढ़ता है, आप jstat या Java Flight Recorder जैसे निगरानी उपकरण का उपयोग कर सकते हैं, जो कोड में बग का संकेत दे सकता है।

डिफ़ॉल्ट सेटिंग्स को प्राथमिकता दें

यदि आपके पास एक छोटा, स्टैंडअलोन जावा एप्लिकेशन है, तो आपको संभवतः कचरा संग्रह स्थापित करने की आवश्यकता नहीं होगी। डिफ़ॉल्ट सेटिंग्स आपकी अच्छी सेवा करेंगी।

अनुकूलित करने के लिए JVM फ़्लैग का उपयोग करें

जावा में कचरा संग्रहण स्थापित करने का सबसे अच्छा तरीका JVM फ़्लैग सेट करना है। झंडे का उपयोग कचरा संग्राहक (उदाहरण के लिए, सीरियल, जी 1, और इसी तरह), ढेर के प्रारंभिक और अधिकतम आकार, ढेर विभाजन के आकार (उदाहरण के लिए, युवा पीढ़ी, पुरानी पीढ़ी), और बहुत कुछ सेट करने के लिए किया जा सकता है। अधिक।

सही नल चुनें

प्रारंभिक सेटिंग्स के संदर्भ में एक अच्छा दिशानिर्देश कस्टम एप्लिकेशन की प्रकृति है। उदाहरण के लिए, समवर्ती कचरा संग्राहक कुशल है, लेकिन अक्सर "वर्ल्ड स्टॉप" घटनाओं को बढ़ाता है, जिससे यह आंतरिक प्रसंस्करण के लिए अधिक उपयुक्त हो जाता है जहां लंबे समय तक रुके रहते हैं।

उसी समय, CMS कचरा संग्राहक को विलंबता को कम करने के लिए डिज़ाइन किया गया है, जो इसे उन वेब अनुप्रयोगों के लिए आदर्श बनाता है जहाँ जवाबदेही महत्वपूर्ण है।