2011-06-03 11 views
7

हमारे .NET 4.0 एप्लिकेशन में एक रिसाव है जो विस्तारित उपयोग के बाद इसे क्रैश कर देता है। जांच के बाद मैंने निर्धारित किया कि "उपयोगकर्ता ऑब्जेक्ट्स" लीक हो रहे थे।उपयोगकर्ता ऑब्जेक्ट्स में रिसाव कैसे खोजें

http://msdn.microsoft.com/en-us/library/ms725486%28v=VS.85%29.aspx

विंडोज आवंटित प्रक्रिया के अनुसार 10,000 उपयोगकर्ता वस्तुओं: एक उपयोगकर्ता वस्तु एक विंडोज़ संसाधन के रूप में यहाँ वर्णित है। अन्य विंडोज संसाधन जैसे कि जीडीआई ऑब्जेक्ट्स और हैंडल स्थिर हैं जबकि ऐप चल रहा है।

मुझे सी ++ के लिए एक समान प्रश्न मिला, जहां समाधान को माइक्रोसॉफ्ट रिसर्च से "डिटोर" नामक पैकेज डाउनलोड करने की आवश्यकता थी - पकड़? $ 10K।

चींटी मेमोरी प्रोफाइलर का उपयोग करके, मुझे लगता है, इसे मेनू के साथ करना है। हम सिंकफ्यूजन से मेनू का उपयोग कर रहे हैं, इसलिए मेनू से संबंधित सामान का जीवन चक्र कोड को देखकर नहीं पाया जा सकता है। तो यह एक बग हो सकता है SynFusion हल करना चाहिए।

किसी के पास सिंकफ्यूजन मेनू का उपयोग कर एक समान रिसाव है? चींटियों ने मुझे बताया कि कुछ पॉपअपमेनू ऑब्जेक्ट्स चारों ओर चिपके हुए हैं, लेकिन चींटियों को यह नहीं पता है कि वस्तुएं कहां बनाई गई हैं (और इस प्रकार यह निर्धारित करें कि उन्हें कहां से निपटाना है)।

उपर्युक्त संदर्भित एसओ पोस्ट में उल्लिखित लीकट्रैप/डिटोर दिलचस्प लग रहा है क्योंकि यह उपयोगकर्ता ऑब्जेक्ट आवंटन के लिए विशिष्ट कॉल को जाल लग रहा था।

सुझाव

+0

से संपर्क करें मैं आपके द्वारा कोड में बनाए गए मेनू को देखना शुरू कर दूंगा। शायद 'ऑनचेंज' ईवेंट में राइट क्लिक मेनू का निर्माण या ऐसा कुछ ऐसा है जो आपके किसी अन्य मेनू को ओवरराइट कर रहा है। मैंने सिंकफ्यूजन के साथ रिसाव किया है अतीत में संपादित करें और उन्हें हल करते समय ऐसा लगता है कि यह ठीक से निपटने के बारे में काफी सख्त था। –

उत्तर

1

यदि आप जानते हैं मेनू व्यतीत कर रहे हैं चारों ओर आप अपने प्रक्रिया के लिए GDI वस्तुओं की गणना करने में सक्षम उन्हें DeleteMenu() के साथ nurf होना चाहिए स्वागत कर रहे हैं।

पॉपअप मेनू प्रदर्शित होने और बंद होने पर विंडो को आपकी मूल विंडो को सूचित करना चाहिए ताकि जीडीआई मेनू हैंडल के स्नैपशॉट लेने और नए को हटाने के लिए यह सही जगह होगी।

अपनी सुंदर जानवर बल और .net के लिए सिफारिश की है, जहां निम्न स्तर GDI हेरफेर की इस तरह नहीं कर शायद शरारती

मैं बात साबित करने के Syncfusion मेनू के साथ एक साधारण परीक्षण एप्लिकेशन बनाना होगा और यदि समस्या बनी रहती विक्रेता

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