2008-08-13 9 views
6

मैंने सीएफ Remote Performance Monitor का उपयोग किया है, हालांकि यह अप्रबंधित दुनिया के विरोध में प्रबंधित दुनिया में शुरू की गई स्मृति को ट्रैक करता है। खैर, मैं केवल यह मान सकता हूं क्योंकि प्रोफाइलर में सूचीबद्ध संख्या अधिकतम अनुमत (सीई 5 पर 32 एमबी) से कम है। आरपीएम के साथ एक विशेष ऐप को प्रोफाइल करने से मुझे पता चला कि सभी कैशों का कुल उपयोग केवल 12 एमबी तक पहुंचने का प्रबंधन करता है और फिर धीरे-धीरे घटता है (मुझे लगता है) कुछ अप्रबंधित प्रारंभिक स्मृति का दावा करने के लिए शुरू होता है। सिस्टम में मेमोरी स्लाइडर यह भी दिखाता है कि डिवाइस मेमोरी पर बहुत छोटा है। अगर मैं प्रक्रिया को मारता हूं तो स्लाइडर सभी मेमोरी को वापस दिखाता है। तो यह इस प्रबंधित प्रक्रिया को (?) होना चाहिए जो स्मृति को निगल रहा है।कॉम्पैक्ट फ्रेमवर्क पर विकास करते समय आपकी सभी यादों को ढूंढने का सबसे अच्छा तरीका क्या है?

क्या कोई साधारण (आईएसएच?) फैशन है कि कोई भी अप्रबंधित स्मृति उपयोग को किसी भी तरह से कैसे ट्रैक कर सकता है जिससे मुझे संबंधित पी/इनवॉक कॉल के साथ मिलान करने में सक्षम हो सकता है?

संपादित करें: आप सभी को फिर से टैग करने के लिए यह .NET नहीं है, इस तरह के प्रश्न को टैग करने से चीजों को भ्रमित कर दिया जाता है। यह .NETCF/कॉम्पैक्ट फ्रेमवर्क है। मुझे पता है कि वे समान दिखते हैं लेकिन वे अलग हैं क्योंकि .NET चट्टानों जबकि सीएफ मूल रूप से NotImplementedException के आसपास एक रैपर है।

+1

".NET चट्टानों जबकि सीएफ़ मूल रूप से NotImplementedException के आसपास एक रैपर है।" मुझे वह उद्धरण पसंद है! – Stormenet

उत्तर

3

Interop logging सक्षम करने का प्रयास करें।

इसके अलावा, आप देशी dll प्रयोग कर रहे हैं के कोड के लिए उपयोग किया है, इस की जाँच: http://msdn.microsoft.com/en-us/netframework/bb630228.aspx

+0

मुझे पता है कि यह पुरानी पोस्ट है लेकिन उम्मीद है कि आप इसे देखेंगे और जवाब देंगे। दूसरा लिंक http://msdn.microsoft.com/en-us/vstudio/aa496123 पर जाता है जो दृश्य स्टूडियो के लिए शीर्ष-स्तरीय साइट प्रतीत होता है। क्या आपको याद है कि आपने क्या जुड़ा था? –

1

मैं निश्चित रूप से एक सी # में अप्रबंधित मुद्दों के साथ लड़ रहा है थोड़ी देर के लिए एप्लिकेशन में कामयाब रहे - यह है आसान नहीं है।

जो मुझे सबसे उपयोगी पाया गया है वह है कि टेक्स्ट लॉग फ़ाइल में नियमित आउटपुट होना। उदाहरण के लिए आप हर बार कुछ नए मिनट लोड करते समय GlobalMemoryStatus के आउटपुट को लॉगिंग के साथ प्रिंट कर सकते हैं। वहां से आप कम से कम देख सकते हैं कि या तो स्मृति धीरे-धीरे खराब हो जाती है, या दिन के विशिष्ट समय पर स्मृति का एक बड़ा हिस्सा गायब हो जाता है।

हमारे लिए, जब तक डिवाइस का उपयोग किया जा रहा था तब तक हमें पूरे दिन धीरे-धीरे स्मृति हानि मिली। वहां से हमने अंततः पाया कि बारकोड स्कैनिंग डिवाइस को हमारे फॉर्म बेस क्लास में किसी विशेष कारण के लिए शुरू नहीं किया जा रहा था (मैं पिछले डेवलपर को दोष देता हूं! :-)

इस लॉगिंग को सेट करना एक छोटी परेशानी हो सकती है, लेकिन हमारे लिए यह विशेष रूप से लाइव उपयोग में डिवाइस के साथ लंबे समय तक भारी लाभांश का भुगतान किया गया है, हम वास्तविक डेटा, उपकरण, अपवादों से ढेर निशान आदि प्राप्त कर सकते हैं।

1

ठीक है, मैं सीई पर सी ++ का उपयोग कर रहा हूं, सी # नहीं, इसलिए यह नहीं हो सकता है सहायक, लेकिन ...

मैं Entrk toolbox नामक पैकेज का उपयोग करता हूं जो विंडोज सीई के तहत स्मृति और संसाधन उपयोग, लीक और अपवादों पर नज़र रखता है। बाउंडशेकर के हल्के सीई संस्करण की तरह बहुत अधिक। चाल सबसे अधिक समय है।