অ্যাপ্লিকেশন দ্বারা ব্যবহৃত র্যাম বা মেমরি আমি কীভাবে পেতে পারি?
অ্যাপ্লিকেশন দ্বারা ব্যবহৃত র্যাম বা মেমরি আমি কীভাবে পেতে পারি?
উত্তর:
তুমি ব্যবহার করতে পার:
Process proc = Process.GetCurrentProcess();
বর্তমান প্রক্রিয়াটি পেতে এবং ব্যবহার করতে:
proc.PrivateMemorySize64;
ব্যক্তিগত মেমরির ব্যবহার পেতে। আরও তথ্যের জন্য এই লিঙ্কটি দেখুন ।
GetCurrentProcess
, তবে সম্পত্তিটি অ্যাক্সেস করার আগে আপনি অন্য ক্রিয়াকলাপ চালিয়ে গেলে কেবল সতেজ হওয়া দরকার। উত্স - মন্তব্যগুলি বলে যে প্রক্রিয়া স্ন্যাপশট তৈরি হওয়ার মুহুর্তে বৈশিষ্ট্যগুলি সঠিক।
আপনি জিসি.গেটটোটালমোরি পদ্ধতিটি পরীক্ষা করতে চাইতে পারেন ।
এটি আবর্জনা সংগ্রহকারী কর্তৃক বরাদ্দকৃত বাইটের সংখ্যা পুনরুদ্ধার করে।
সিস্টেম.এনভায়রনমেন্টের ওয়ার্কিংসেট রয়েছে - একটি -৪ -বিট স্বাক্ষরিত পূর্ণসংখ্যা সহ প্রসেসের প্রসঙ্গে ম্যাপযুক্ত শারীরিক মেমরির বাইট সংখ্যা রয়েছে।
আপনি যদি বিশদ চান তবে এখানে সিস্টেম.ডায়াগনস্টিকস P পারফরম্যান্স কাউন্টার রয়েছে তবে এটি সেটআপ করার জন্য আরও কিছুটা চেষ্টা করা হবে।
দেখুন এখানে বিস্তারিত জানার জন্য।
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()
দুটিবার কল করা দরকার । তারপরে এটি সিপিইউ ব্যবহারের প্রকৃত মান দেয়। আরও বিশদ এখানে দেখুন ।
ছাড়াও @JesperFyhrKnudsen এর উত্তর এবং @MathiasLykkegaardLorenzen এর মন্তব্যে, আপনি ভাল চাই dispose
ফিরেProcess
এটি ব্যবহার করেন।
সুতরাং, এর নিষ্পত্তি করার জন্য Process
, আপনি এটিকে একটি using
সুযোগে মোড়ানো করতে পারেন বা Dispose
ফিরে আসা প্রক্রিয়াতে কল করতে পারেন ( proc
পরিবর্তনশীল) on
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
ভেরিয়েবলটি মেগাবাইটে রূপান্তর করতে পারেন।
^
তে বিটওয়াইজ এক্সওর, পাওয়ার নয় not সুতরাং কেবল ব্যবহার করুন proc.PrivateMemorySize64 / (1024*1024)
, বাproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
হিসাবে বিভাগের চেয়ে গুণটির অগ্রাধিকার নেই।
সম্পূর্ণ সিস্টেমের জন্য আপনি মাইক্রোসফ্ট.ভিজুয়ালবাসিক ফ্রেমওয়ার্ককে একটি রেফারেন্স হিসাবে যুক্ত করতে পারেন;
Console.WriteLine("You have {0} bytes of RAM",
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory);
Console.ReadLine();
System.Diagnostics.Process
ক্লাসটি একবার দেখে নেওয়া উচিত ।