c# - मुझे कैसे पता चलेगा कि स्मृति में सी#में क्या प्रयोग किया जा रहा है?




memory windows-phone-7 (4)

आप रेडगेट के एएनटीएस मेमोरी प्रोफाइलर (लेकिन इसकी लागत) की कोशिश कर सकते हैं और मैं इसे WP7 के साथ उपयोग करने के बारे में निश्चित नहीं हूँ, लेकिन यह सी # के लिए है।

एक नि: शुल्क परीक्षण है ताकि आप उस समस्या का पता लगाने में मदद करने में सक्षम हो सकें।

मेरे पास WP7 प्रोजेक्ट पर सी # एक्सएएन है और मुझे लगता है कि यह स्क्रीन परिवर्तनों के बीच मेमोरी खा रहा है और इसे वापस नहीं लौटा रहा है, अंत में एक आउटफिममेरी एक्सप्शन की ओर जाता है।

मैंने देखा और देखा है, लेकिन मैं नहीं कर सकता कि मेरे जीवन के लिए यह याद है कि यह स्मृति कहाँ जा रही है।

क्या कोई तरीका है मैं यह पता लगा सकता हूं कि स्मृति का उपयोग क्यों किया जा रहा है और इसे वापस डिवाइस पर क्यों नहीं दिया जा रहा है?

किसी भी मदद के लिए धन्यवाद!


Coding4fun टूलकिट में एक स्मृति काउंटर है जो आपके एप्लिकेशन के स्मृति उपयोग को ट्रैक करने में सहायता करता है। यहां दस्तावेज़ीकरण और इसके प्रयोग का एक लेख दिखाया गया है।



मैं जो उपयोग करता हूं वह मोनो प्रोफाइलर है I इसमें कई विकल्प हैं; सबसे सरल उपयोग है

mono --profile=log program.exe

और फिर, program.exe output.mlpd बाहर निकल जाने के बाद, यह एक output.mlpd फ़ाइल (डिफ़ॉल्ट रूप से output.mlpd ) output.mlpd , और इकट्ठी हुई जानकारी उपयोग को पढ़ने के लिए:

mprof-report output.mlpd

उदाहरण के लिए मैं mprof-report output.mlpd | vim - mprof-report output.mlpd | vim -

डिफ़ॉल्ट रूप से यह विभिन्न सूचनाओं का एक समूह इकट्ठा करता है। आउटपुट की शुरुआती शुरुआत में (डिफ़ॉल्ट सेटिंग दी गई) आप फ़ंक्शन को "आवंटित" कॉलम द्वारा सॉर्ट किए गए कार्यों की तालिका देखेंगे, उदा।

Allocation summary
  24      Bytes      Count  Average Type name
  25    7357392     306558       24 System.IntPtr
  26    6677904     139123       48 System.Collections.ArrayList.ArrayListEnumeratorSimple
  27    5842736     136185       42 Mono.Unix.Native.Syscall._pollfd[]
  28    3078176      49566       62 System.Byte[]
  29    2574504      38057       67 System.String
  30     908320      14803       61 System.Int32[]
  31     719984       5294      136 Mono.Globalization.Unicode.SortKeyBuffer

मेरे दिमाग से इसका लाभ:

  • यह क्रॉसप्लैटफ़ॉर्म है, इसलिए आप जीएनयू / लिनक्स और मैक पर एनएटी रैम आवंटन आसानी से कर सकते हैं।
  • यह रचनाकारों और .net के सबसे बड़े उपयोगकर्ताओं द्वारा विकसित किया गया है - माइक्रोसॉफ्ट इससे पहले इसे एक्समारिन ने विकसित किया था, लेकिन एमएस ने उन्हें खरीदा था, और अब उन्होंने मुख्य मोनो पेज पर उल्लेख किया है।




xna-4.0