मैं एक सी # प्रोग्रामम, स्मृति उपयोग में मापने की कोशिश कर रहा हूं।सी # के साथ मेमोरी उपयोग को मापने के लिए कैसे करें (जैसा कि हम जावा में कर सकते हैं)?
मैं इस जावा समारोह के बराबर सी # जानना चाहते हैं:
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getCommitted()
कि कुल स्मृति ढेर के लिए आवंटित प्रतिनिधित्व करते हैं। मुझे अपने सी # प्रोग्राम के लिए आवंटित स्मृति के कुल आकार को जानने की आवश्यकता है।
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed()
वर्तमान में मैं सी # में इस का उपयोग प्रयुक्त स्मृति पाने के लिए:
Process_Memory = MyProcess.PrivateMemorySize64;
लेकिन मैं पूरी तरह से यकीन है कि यह है नहीं कर रहा हूँ
फिर जावा में मैं के साथ प्रयोग किया स्मृति प्राप्त कर सकते हैं बराबर।
तो फिर से शुरू करने में मुझे अपने सी # एप्लिकेशन के लिए कुल आवंटित स्थान और वर्तमान समय में टी पर उपयोग कैसे प्राप्त किया जा सकता है?
संपादित करें:
जवाब सेऔर आगे अनुसंधान मैं यह निर्धारित कर दिया है:
उपयोग
System.GC.GetTotalMemory(false);
में वर्तमान स्मृति नंबर दो बाइट्स वर्तमान के वाई प्रबंधित स्मृति में आवंटित। (http://msdn.microsoft.com/fr-fr/library/system.gc.gettotalmemory.aspx)
यह विधि एक कम मूल्य लौट सकते हैं और मैं बहुत यकीन है कि यह वास्तव में उपयोग में सभी स्मृति का प्रतिनिधित्व नहीं है के रूप में मैं के साथ getUsed()
में जावा प्राप्त कर सकते हैं कर रहा हूँ। जावा में उसी एप्लिकेशन के लिए मेमोरी 5 एमबी पर शुरू होती है और 125 एमबी अधिकतम तक जाती है। सी # के साथ उपर्युक्त विधि के साथ 1 से 5 एमबी तक मिलता है।
ऐसा लगता है कि:
MyProcess.PrivateMemorySize64; // return ~=25MB
या
MyProcess.WorkingSet64; //return ~=20MB
उपयोग में सभी स्मृति का एक और अधिक सटीक मूल्य दे। लेकिन मुझे नहीं पता कि मुझे किस का उपयोग करना चाहिए ...
वैश्विक आबंटित स्मृति के लिएthis article उपयोग करने के लिए पता चलता है:
Process_MemoryEnd1 = MyProcess.VirtualMemorySize64;
यह हमेशा एक ही मूल्य programm साथ लौटने के लिए, 169MB के बारे में है कि जावा की तुलना में उचित लगता है: 64 एमबी से 170 तक एमबी अधिकतम
मैं अभी भी एक सटीक जवाब सब मैंने पाया की तलाश में हूँ बहुत अस्पष्ट है और मैं विंडोज स्मृति प्रबंधन से परिचित नहीं हूँ, मैं सच में डॉक्स मैंने पाया undertand करने के लिए यकीन नहीं है:/
हाँ मैं यह जानता हूँ, लेकिन यह प्रबंधित ढेर में वस्तुओं का वास्तविक आकार दें, यह एक कम मूल्य है। मुझे नहीं लगता कि यह सभी आवंटित स्मृति का प्रतिनिधि है। –
तब मेरा मानना है कि आपको 'प्रक्रिया' कक्षा के उन सभी गुणों का उपयोग करने की आवश्यकता है यदि आप कच्चे आवंटित स्मृति चाहते हैं (यानी किसी भी प्रबंधित जीसी कार्यक्षमता को ध्यान में रखते हुए)। 'PagedMemorySize64', 'PrivateMemorySize64', आदि – Tyson
धन्यवाद, इसलिए मुझे लगता है कि अगर मैं सिर्फ प्रोसेसस कुल आवंटित स्मृति' PrivateMemorySize64' चाहता हूं तो पर्याप्त हो सकता है। मुझे पजेड मेमोरी नहीं मिलती है ... –