2012-12-25 19 views
21

संभव डुप्लिकेट:
How to get memory available or used in C#कैसे एक आवेदन के द्वारा प्रयोग किया स्मृति की मात्रा प्राप्त करने के लिए

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

क्या कोई मुझे कुछ मदद दे सकता है, मैं उपयोग की गई स्मृति कैसे प्राप्त कर सकता हूं।

उत्तर

22

आप निम्न फ़ंक्शन का उपयोग कर सकते हैं (सच पैरामीटर जीसी बताता है एक संग्रह पहले प्रदर्शन करने के लिए):

long memory = GC.GetTotalMemory(true); 
+0

जैसा कि डुप्लिकेट में उल्लिखित है, सावधान रहें: यह समाधान केवल प्रबंधित ढेर को देखता है। पूर्ण प्रक्रिया आकार प्राप्त करने के लिए: https://stackoverflow.com/a/750595/331281 – Dejan

-1

क्यों न सिर्फ TaskManager साथ या Sysinternals और केवल से अधिक उन्नत उपकरणों के साथ स्मृति के उपयोग पर नजर रखने के यह निर्धारित करने के बाद कि वर्कफ़्लो मेमोरी उपयोग को असामान्य रूप से बढ़ाता है, फिर सीएलआर प्रोफाइलर या अन्य के साथ एप्लिकेशन को प्रोफाइल करें।

8

आप GC.GetTotalMemory कोशिश कर सकते हैं:

यह बाइट्स वर्तमान में आवंटित किया जाना सोचा की संख्या पुन: प्राप्त करता। एक पैरामीटर इंगित करता है कि यह विधि लौटने से पहले> ऑब्जेक्ट को कचरा इकट्ठा करने और अंतिम रूप देने की अनुमति देने के लिए, एक छोटे अंतराल का इंतजार कर सकती है।


या

using System.Diagnostics; 

Process currentProc = Process.GetCurrentProcess(); 

एक बार जब आप मौजूदा प्रक्रिया के लिए एक संदर्भ है, तो आप PrivateMemorySize64 संपत्ति को पढ़ कर अपनी स्मृति के उपयोग का निर्धारण कर सकते हैं।

long memoryUsed = currentProc.PrivateMemorySize64; 
+1

वे समान हैं? – mcmillab

2

यदि आप अपने आवेदन द्वारा उपयोग की गई मेमोरी की निगरानी करना चाहते हैं, तो आपको इसके लिए कोड लिखने की आवश्यकता नहीं है। बस विंडोज़ (http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters) से प्रदर्शन काउंटर का उपयोग करें। वे आपको चार्ट के साथ आवश्यक जानकारी प्रदान करेंगे! बहुत सारे मेमोरी काउंटर (http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx) हैं, उनमें से एक में आपके पास आवश्यक डेटा होगा और मुझे लगता है कि यह पता लगाने में आपकी सहायता करेगा कि आपका ऐप कब से अधिक स्मृति का उपयोग करना शुरू कर देगा।

हालांकि, अगर आपको यह जानकारी आपके आवेदन में रखने की आवश्यकता है, तो भी आप प्रदर्शन काउंटर का उपयोग कर सकते हैं। .NET में सिस्टम में कक्षाएं हैं। डायग्नोस्टिक नामस्थान अपने डेटा तक पहुंचने के लिए। यह उदाहरण देखें: http://www.geekpedia.com/tutorial211_Using-Performance-Counters-in-Csharp.html