विभिन्न कचरा संग्रहण सेटिंग्स का परीक्षण करने के लिए समय निकालने के लिए बहुत कुछ कहा जाता है, लेकिन जैसा कि ऊपर उल्लेख किया गया है, आमतौर पर ऐसा करने के लिए उपयोगी नहीं है।
मैं वर्तमान में मेमोरी-सीमित वातावरण और डेटा की अपेक्षाकृत बड़ी मात्रा वाले प्रोजेक्ट पर काम कर रहा हूं - डेटा के कुछ बड़े टुकड़े हैं जो मेरे पर्यावरण को इसकी सीमा तक धकेलते हैं, और भले ही मैं स्मृति उपयोग को कम करने में सक्षम था सिद्धांत रूप में यह ठीक काम करना चाहिए, मैं अभी भी ढेर अंतरिक्ष त्रुटियों को मिलेगा --- क्रिया जीसी विकल्पों ने मुझे दिखाया कि यह कचरा इकट्ठा करने की कोशिश कर रहा था, लेकिन कोई फायदा नहीं हुआ। डीबगर में, मैं System.gc () प्रदर्शन कर सकता था और निश्चित रूप से पर्याप्त "मेमोरी" उपलब्ध होगी ... बहुत अधिक अतिरिक्त नहीं, लेकिन पर्याप्त।
नतीजतन, केवल एक बार मेरा आवेदन System.gc () कहता है, जब यह कोड के सेगमेंट में प्रवेश करने वाला होता है, जहां डेटा को संसाधित करने के लिए आवश्यक बड़े बफ़र्स आवंटित किए जाएंगे, और उपलब्ध मुफ्त मेमोरी पर एक परीक्षण इंगित करता है कि मैं नहीं हूं। इसकी गारंटी है। विशेष रूप से, मैं एक 1gb वातावरण को देख रहा हूं जहां कम से कम 300mb में स्थैतिक डेटा का कब्जा है, गैर-स्थैतिक डेटा के थोक के साथ निष्पादन-संबंधित होने के अलावा जब संसाधित होने वाले डेटा को कम से कम 100-200 एमबी होना चाहिए स्रोत। यह सभी स्वचालित डेटा रूपांतरण प्रक्रिया का हिस्सा है, इसलिए लंबे समय में अपेक्षाकृत कम समय के लिए डेटा मौजूद रहता है।
दुर्भाग्य से, जबकि कचरा कलेक्टर को ट्यूनिंग के लिए विभिन्न विकल्पों के बारे में जानकारी उपलब्ध है, यह काफी हद तक एक प्रायोगिक प्रक्रिया है और निचले स्तर की बारीकियों को समझने के लिए आवश्यक है कि इन विशिष्ट स्थितियों को कैसे संभालना है आसानी से प्राप्त नहीं किया जाता है।
उस सब के बारे में कहा जा रहा है, भले ही मैं System.gc () का उपयोग कर रहा हूं, फिर भी मैंने कमांड लाइन मापदंडों का उपयोग करते हुए धुन जारी रखी और अपने आवेदन के समग्र प्रसंस्करण समय को अपेक्षाकृत महत्वपूर्ण मात्रा में सुधारने में कामयाब रहा, बावजूद इसके कि वह खत्म न हो सके। डेटा के बड़े ब्लॉक के साथ काम करके ब्लॉक किया गया ठोकर। कहा जा रहा है, System.gc () एक उपकरण है .... एक बहुत ही अविश्वसनीय उपकरण है, और यदि आप इस बात से सावधान नहीं हैं कि आप इसका उपयोग कैसे करते हैं, तो आप चाहते हैं कि यह अधिक बार काम न करे।