Đọc file /proc/self/stat trên Linux để lấy Virtual Memory Size (VMS) và Resident Set Size (RSS) của tiến trình hiện tại.
Ví dụ mã nguồn
#include <iostream>
#include <fstream>
#include <string>
#include <unistd.h>
using namespace std;
void getMemoryUsage(double& vm_kb, double& rss_kb) {
vm_kb = rss_kb = 0.0;
ifstream stat("/proc/self/stat");
string pid, comm, state, ppid, pgrp, session, tty, tpgid, flags;
string minflt, cminflt, majflt, cmajflt, utime, stime, cutime, cstime;
string priority, nice, O, itrealvalue, starttime;
unsigned long vsize;
long rss;
stat >> pid >> comm >> state >> ppid >> pgrp >> session >> tty
>> tpgid >> flags >> minflt >> cminflt >> majflt >> cmajflt
>> utime >> stime >> cutime >> cstime >> priority >> nice
>> O >> itrealvalue >> starttime >> vsize >> rss;
stat.close();
long page_kb = sysconf(_SC_PAGE_SIZE) / 1024;
vm_kb = vsize / 1024.0;
rss_kb = rss * page_kb;
}
int main() {
double vm, rss;
getMemoryUsage(vm, rss);
cout << "Virtual Memory: " << vm << " KB\n";
cout << "Resident Set Size: " << rss << " KB\n";
return 0;
}
Đầu ra mẫu
Virtual Memory: 13272 KB Resident Set Size: 1548 KB