मैं एप्लिकेशन द्वारा उपलब्ध रैम या मेमोरी का उपयोग कैसे कर सकता हूं?
मैं एप्लिकेशन द्वारा उपलब्ध रैम या मेमोरी का उपयोग कैसे कर सकता हूं?
जवाबों:
आप उपयोग कर सकते हैं:
Process proc = Process.GetCurrentProcess();
वर्तमान प्रक्रिया और उपयोग पाने के लिए:
proc.PrivateMemorySize64;
निजी मेमोरी उपयोग प्राप्त करने के लिए। अधिक जानकारी के लिए इस लिंक को देखें ।
GetCurrentProcess
, लेकिन गुणों को एक्सेस करने से पहले यदि आप अन्य ऑपरेशन कर रहे हैं तो केवल ताज़ा करने की आवश्यकता है। स्रोत - रिमार्क्स कहते हैं कि जिस समय स्नैपशॉट बनाया जाता है उस समय गुण सही होते हैं।
आप GC.GetTotalMemory की जांच करना चाहते हैं विधि की ।
यह वर्तमान में कचरा कलेक्टर द्वारा आवंटित किए जाने वाले बाइट्स की संख्या को पुनः प्राप्त करता है।
System.Environment में WorkingSet है - 64-बिट हस्ताक्षरित पूर्णांक जिसमें भौतिक मेमोरी के बाइट्स की संख्या है जो प्रक्रिया के संदर्भ में मैप की गई है।
यदि आप बहुत अधिक विवरण चाहते हैं तो System.Diagnostics.PerformanceCounter है , लेकिन इसे सेटअप करने के लिए थोड़ा और प्रयास करना होगा।
देखो यहाँ जानकारी के लिए।
private PerformanceCounter cpuCounter;
private PerformanceCounter ramCounter;
public Form1()
{
InitializeComponent();
InitialiseCPUCounter();
InitializeRAMCounter();
updateTimer.Start();
}
private void updateTimer_Tick(object sender, EventArgs e)
{
this.textBox1.Text = "CPU Usage: " +
Convert.ToInt32(cpuCounter.NextValue()).ToString() +
"%";
this.textBox2.Text = Convert.ToInt32(ramCounter.NextValue()).ToString()+"Mb";
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void InitialiseCPUCounter()
{
cpuCounter = new PerformanceCounter(
"Processor",
"% Processor Time",
"_Total",
true
);
}
private void InitializeRAMCounter()
{
ramCounter = new PerformanceCounter("Memory", "Available MBytes", true);
}
यदि आपको मान 0 के रूप में मिलता है तो इसे NextValue()
दो बार कॉल करने की आवश्यकता है । तब यह CPU उपयोग का वास्तविक मूल्य देता है। अधिक विवरण यहां देखें ।
के अलावा @JesperFyhrKnudsen के जवाब और @MathiasLykkegaardLorenzen की टिप्पणी, तो आप बेहतर चाहते dispose
लौटेProcess
उपयोग करने के बाद।
इसलिए, निपटाने के लिए Process
, आप इसे एक using
दायरे में लपेट सकते हैं या Dispose
लौटी प्रक्रिया ( proc
चर) पर बुला सकते हैं ।
using
स्कोप:
var memory = 0.0;
using (Process proc = Process.GetCurrentProcess())
{
// The proc.PrivateMemorySize64 will returns the private memory usage in byte.
// Would like to Convert it to Megabyte? divide it by 2^20
memory = proc.PrivateMemorySize64 / (1024*1024);
}
या Dispose
विधि:
var memory = 0.0;
Process proc = Process.GetCurrentProcess();
memory = Math.Round(proc.PrivateMemorySize64 / (1024*1024), 2);
proc.Dispose();
अब आप memory
वैरिएबल का उपयोग कर सकते हैं जो मेगाबाइट में बदल जाता है।
^
वाइज XOR है, पावर नहीं। तो बस का उपयोग करें proc.PrivateMemorySize64 / (1024*1024)
, याproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
गुणा होना चाहिए क्योंकि विभाजन पर प्राथमिकता नहीं है।
संपूर्ण सिस्टम के लिए आप Microsoft.VisualBasic Framework को संदर्भ के रूप में जोड़ सकते हैं;
Console.WriteLine("You have {0} bytes of RAM",
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory);
Console.ReadLine();
System.Diagnostics.Process
कक्षा पर एक नज़र डालनी चाहिए ।