हां, यह अत्यधिक ध्वनि करता है। जीसी की मात्रा को कम करना संभवतः एकमात्र बेहतरीन कदम होगा जो आप अपने आवेदन के रनटाइम को कम करने के लिए ले सकते हैं (यदि यह आपका लक्ष्य है)।
जीसी में एक उच्च "% समय" आमतौर पर आवंटित करने और फिर हजारों या लाखों वस्तुओं को फेंकने के कारण होता है। क्या हो रहा है यह जानने का एक अच्छा तरीका है मेमोरी प्रोफाइलर टूल का उपयोग करना।
माइक्रोसॉफ्ट मुफ्त CLR Profiler प्रदान करता है। यह आपको हर आवंटन दिखाएगा, लेकिन आपके ऐप को 10-60 गुना धीमा कर देगा। आपको इसे कम इनपुट डेटा पर चलाने की आवश्यकता हो सकती है ताकि यह उचित समय में विश्लेषण समाप्त कर सके।
एक महान वाणिज्यिक उपकरण साइटेक के .NET Memory Profiler है। यह बहुत कम रनटाइम ओवरहेड लगाता है, और एक निशुल्क परीक्षण उपलब्ध है। आपकी प्रक्रिया चल रही है, जबकि कई स्नैपशॉट्स ले कर, आप यह पता लगा सकते हैं कि किस प्रकार की वस्तुओं को आवंटित किया जा रहा है (और फिर नष्ट हो गया)।
एक बार जब आप आवंटन के स्रोत की पहचान कर लेंगे, तो आपको कोड की जांच करने और यह पता लगाने की आवश्यकता है कि उन आवंटन को कैसे कम किया जा सकता है। हालांकि, कोई भी आकार-फिट नहीं है- सभी उत्तरों में, कुछ चीजें जिन्हें मैंने पहले सामना किया है उनमें शामिल हैं:
- स्ट्रिंग। स्प्लिट सैकड़ों छोटे अल्पकालिक तारों को बना सकता है। यदि आप बहुत सी स्ट्रिंग मैनिपुलेशन कर रहे हैं, तो यह स्ट्रिंग को चरित्र-दर-चरित्र पर चलकर प्रक्रिया करने में मदद कर सकता है।
- हजारों छोटी कक्षाओं (कहें, आकार में 24 बाइट्स के तहत) के सरणी या सूचियां बनाना महंगा हो सकता है; यदि उन वर्गों को मूल्य प्रकार के रूप में माना जा सकता है, तो यह कभी-कभी चीजों को बदलने के लिए चीजों को बेहतर बना सकता है।
- हजारों छोटे सरणी बनाना स्मृति उपयोग को बहुत बढ़ा सकता है (क्योंकि प्रत्येक सरणी में थोड़ी सी ओवरहेड होती है); कभी-कभी इन्हें एक बड़े सरणी और इंडेक्स के साथ इसके उपधारा में बदल दिया जा सकता है।
- बहुत से अंतिम वस्तुएं (विशेष रूप से यदि उनका निपटारा नहीं किया जा रहा है) होने से कचरा कलेक्टर पर बहुत अधिक दबाव हो सकता है; सुनिश्चित करें कि आप सभी आईडीस्पोजेबल ऑब्जेक्ट्स का सही ढंग से निपटान कर रहे हैं, और ध्यान दें कि आपके स्वयं के प्रकार (लगभग) never have finalizers होना चाहिए।
- माइक्रोसॉफ्ट के पास प्रदर्शन में सुधार के लिए Garbage Collection Guidelines के साथ एक लेख है।
स्रोत
2009-07-15 15:24:26
क्या यह एएसपी.नेट है? –
ध्यान देने योग्य एक बात यह है कि यह प्रदर्शन काउंटर अंतिम अनुमानित मूल्य दिखाता है, न कि निरंतर औसत। यह केवल हर जीसी चक्र के अंत में अद्यतन किया जाता है। – adrianbanks
यह एक स्वयं होस्टेड डब्ल्यूसीएफ सेवा में है। –