আমরা রানটাইমে মেমরি ইউসেজ পেতে পারি যেমন ভার্চুয়াল মেমরি ইউসেজ বা রেজিডেন্ট সেট সাইজ ইত্যাদি। এগুলো পেতে আমরা কিছু সিস্টেম লাইব্রেরি ব্যবহার করতে পারি। এই প্রক্রিয়া অপারেটিং সিস্টেমের উপর নির্ভর করে। এই উদাহরণে, আমরা Linux অপারেটিং সিস্টেম ব্যবহার করছি।
তো এখানে আমরা দেখব কিভাবে Linux এনভায়রনমেন্টে C++ ব্যবহার করে মেমরি ইউসেজ স্ট্যাটিস্টিক্স পাওয়া যায়। আমরা "/proc/self/stat" ফোল্ডার থেকে সব ডিটেইলস পেতে পারি। এখানে আমরা ভার্চুয়াল মেমরি স্ট্যাটাস এবং রেজিডেন্ট সেট সাইজ নিচ্ছি।
উদাহরণ
#include <unistd.h>
#include <ios>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void mem_usage(double& vm_usage, double& resident_set) {
vm_usage = 0.0;
resident_set = 0.0;
ifstream stat_stream("/proc/self/stat", ios_base::in); // proc ডিরেক্টরি থেকে ইনফো নিন
// ইনফো পেতে কিছু ভেরিয়েবল তৈরি করুন
string pid, comm, state, ppid, pgrp, session, tty_nr;
string tpgid, flags, minflt, cminflt, majflt, cmajflt;
string utime, stime, cutime, cstime, priority, nice;
string O, itrealvalue, starttime;
unsigned long vsize;
long rss;
stat_stream >> pid >> comm >> state >> ppid >> pgrp >> session >> tty_nr
>> tpgid >> flags >> minflt >> cminflt >> majflt >> cmajflt
>> utime >> stime >> cutime >> cstime >> priority >> nice
>> O >> itrealvalue >> starttime >> vsize >> rss; // বাকি কেয়ার নয়
stat_stream.close();
long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; // x86-64-এর জন্য 2MB পেজ কনফিগার
vm_usage = vsize / 1024.0;
resident_set = rss * page_size_kb;
}
int main() {
double vm, rss;
mem_usage(vm, rss);
cout << "Virtual Memory: " << vm << "\nResident set size: " << rss << endl;
}
আউটপুট
Virtual Memory: 13272 Resident set size: 1548