हम रन टाइम पर मेमोरी उपयोग जैसे वर्चुअल मेमोरी उपयोग या निवासी सेट आकार आदि प्राप्त कर सकते हैं। उन्हें प्राप्त करने के लिए हम कुछ सिस्टम लाइब्रेरी का उपयोग कर सकते हैं। यह प्रक्रिया ऑपरेटिंग सिस्टम पर निर्भर करती है। इस उदाहरण के लिए, हम Linux ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं।
तो यहां हम देखेंगे कि सी ++ का उपयोग करके लिनक्स पर्यावरण के तहत मेमोरी उपयोग के आंकड़े कैसे प्राप्त करें। हम "/ 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); //get info from proc
directory
//create some variables to get info
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; // don't care
about the rest
stat_stream.close();
long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; // for x86-64 is configured
to use 2MB pages
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