2009-10-28 15 views
5

हमारे पास एक ऐसा एप्लिकेशन है जो मिश्रित .NET 2.0 और मूल C++ है। हमारे परीक्षण में, हमारे पास एक ऐसा मोड है जो स्वचालित रूप से परियोजनाओं के एक सेट के माध्यम से लूप कर सकता है। एक प्रोजेक्ट खुलता है, चलाता है, बंद करता है, दोहराता है। इन चरणों में से प्रत्येक को विंडोज़ के निर्माण/विनाश की आवश्यकता होती है (Winforms सटीक होने के लिए)। हाल ही में हमने प्रदर्शन में कुछ अजीब व्यवहार का अनुभव किया है। कुछ घंटों तक चलने के बाद उद्घाटन और समापन भाग धीमा हो जाते हैं (गुई धागे को अवरुद्ध करते हैं और आधे खींचे गए स्क्रीन आदि दिखाते हैं)। अब संसाधन संसाधन रिसाव में इसे चॉक करना आसान होगा ... लेकिन हम हैंडल और मेमोरी को ट्रैक कर रहे हैं, और जबकि स्मृति थोड़ा बढ़ता है, इस समस्या के स्तर को इंगित करने के लिए कुछ भी नहीं है। हैंडल स्थिर हैं। तो शायद घटना हैंडलरों को लटकाना ... अभी भी इसकी जांच करने की आवश्यकता है। लेकिन किकर, जो मुझे परेशान करता है, यह है कि एप्लिकेशन को बंद करना और इसे पुनरारंभ करना प्रारंभिक प्रदर्शन को वापस नहीं लाता है। यह अभी भी धीमा है जब तक कि मैं ओएस को रीबूट नहीं करता (XP जीतता हूं) और फिर प्रदर्शन फिर से शुरू हो जाता है। यह वास्तव में मुझे परेशान करता है क्योंकि मुझे लगता है कि एप्लिकेशन को बंद करना सभी संसाधनों को पुनः प्राप्त करेगा। कोई विचार?आवेदन में अजीब प्रदर्शन गिरावट

+0

आप से पहले और मंदी के बाद प्रोफाइलर तहत अनुप्रयोग चलाने चाहिए, और दो परिणामों की तुलना लीक कर रहे थे। सब कुछ जो काफी अलग होने के रूप में चिपक जाता है वह जांच के लायक है। बहुत सारे मुफ्त, या अच्छे, या मुफ्त और अच्छे प्रोफाइलर हैं, बस कुछ कोशिश करें और एक को चुनें जिसे आप सहज महसूस करते हैं। – Rom

उत्तर

1

एक संभावित जीडीआई हैंडल रिसाव की तरह लगता है। GDI objects कचरा कलेक्टर द्वारा स्वचालित रूप से उठाया नहीं जाता है।

.NET मेमोरी प्रोफाइलर (http://memprofiler.com/) इन्हें ट्रैक करने का एक अच्छा काम करता है (एक 14 दिन का परीक्षण संस्करण है)।

आप इन देखा है:

+0

मैं मेमोरी प्रोफाइलर का उपयोग करूंगा। यह आपको स्नैपशॉट लेने और उनकी तुलना करने देता है - ताकि आप एक पुनरावृत्ति पर एक स्नैपशॉट ले सकें, अगले पर एक और ले जाएं, और उन्हें अलग करें - आप देख सकते हैं कि आपके ऐप के सामान्य पुनरावृत्तियों के बीच क्या बढ़ रहा है। – stusmith

+0

मेरे पास .NET मेमोरी प्रोफाइलर है और यह कोशिश करेगा - लेकिन तथ्य यह है कि एप्लिकेशन को पुनरारंभ करना (रीबूट किए बिना) समस्या को ठीक नहीं करता है, प्रक्रिया की प्रक्रिया में कुछ भी नहीं समझाया जाएगा। – user109078

+0

जीडीआई हैंडल जैसे कुछ सीमित सिस्टम संसाधनों के लिए यह सच नहीं है .... –

0

आप इसे एक संसाधन रिसाव (जो एक बुरा अनुमान नहीं है) मान रहे हैं, लेकिन यह कुछ और हो सकता है।

क्या आपने प्रदर्शन प्रोफाइलर का उपयोग करने का प्रयास किया है?

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