Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Lấy thông tin bộ nhớ tại runtime trong C++ (Linux)


Đọ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