Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में लिनक्स के तहत मेमोरी उपयोग कैसे प्राप्त करें

/proc फाइलसिस्टम से मेमोरी जानकारी पढ़ना

लिनक्स में, हम /proc/self/stat फाइल से प्रक्रिया के बारे में सभी विवरण प्राप्त कर सकते हैं। यहां हम वर्चुअल मेमोरी आकार और रेजिडेंट सेट साइज (RSS) ले रहे हैं।

पूर्ण कार्यान्वयन

#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;
    
    // /proc/self/stat से जानकारी प्राप्त करें
    ifstream stat_stream("/proc/self/stat", ios_base::in);
    
    // जानकारी प्राप्त करने के लिए वेरिएबल्स बनाएं
    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();
    
    // पेज साइज KB में (x86-64 पर आमतौर पर 4KB)
    long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024;
    
    // वर्चुअल मेमोरी साइज (KB में)
    vm_usage = vsize / 1024.0;
    
    // रेजिडेंट सेट साइज (KB में)
    resident_set = rss * page_size_kb;
}

int main() {
    double vm, rss;
    mem_usage(vm, rss);
    cout << "Virtual Memory: " << vm << " KB\n";
    cout << "Resident set size: " << rss << " KB" << endl;
    return 0;
}

आउटपुट

Virtual Memory: 13272 KB
Resident set size: 1548 KB

फील्ड्स की व्याख्या

वैकल्पिक: /proc/self/status का उपयोग करना

/proc/self/status फाइल अधिक मानव-पठनीय फॉर्मेट प्रदान करती है:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void print_mem_info() {
    ifstream status("/proc/self/status");
    string line;
    while (getline(status, line)) {
        if (line.find("VmSize:") == 0 || line.find("VmRSS:") == 0) {
            cout << line << endl;
        }
    }
}

नोट

  • यह दृष्टिकोण केवल लिनक्स पर काम करता है
  • /proc/self/stat का पार्सिंग कर्नेल संस्करणों के बीच थोड़ा भिन्न हो सकता है
  • क्रॉस-प्लेटफॉर्म समाधान के लिए, getrusage() (POSIX) या विंडोज पर GetProcessMemoryInfo पर विचार करें
  1. लिनक्स में हाई मेमोरी उपयोग को कैसे ठीक करें लिनक्स में हाई मेमोरी उपयोग को कैसे ठीक करें

    हमारे कंप्यूटर्स में पहले से कहीं अधिक मेमोरी है। संभावना है कि यह सच है चाहे आप इसे कब पढ़ रहे हों। उस ने कहा, चाहे आपके पास कितनी भी मेमोरी हो, यह कभी भी पर्याप्त नहीं लगती। आप अपने कंप्यूटर या सर्वर को जितनी RAM ले सकता है उतनी भर सकते हैं, और कुछ न कुछ हमेशा इसके लिए उपयोग ढूंढ लेगा। ज्यादातर सम

  1. Firefox मेमोरी उपयोग कैसे कम करें Firefox मेमोरी उपयोग कैसे कम करें

    Mozilla Firefox एक सुरक्षित, विश्वसनीय, और तेज़ मल्टी-प्रोसेस वेब ब्राउज़र है जो न्यूनतम मेमोरी फुटप्रिंट के साथ तेज़, स्थिर प्रदर्शन प्रदान करता है। हालांकि, ऐसे समय होते हैं जब यह टन मेमोरी ले सकता है और क्रैश हो सकता है। यदि आप निरंतर Firefox मेमोरी उपयोग के दौरों का अनुभव कर रहे हैं, तो यह गाइड

  1. लिनक्स पर माइक्रोसॉफ्ट ऑफिस इंस्टॉल करें: एक चरण-दर-चरण गाइड लिनक्स पर माइक्रोसॉफ्ट ऑफिस इंस्टॉल करें: एक चरण-दर-चरण गाइड

    बहुत से लोग लिनक्स पर ऑफिस प्राप्त करने की कोशिश कर रहे हैं। वर्ड, एक्सेल और पावरपॉइंट जैसे ऑफिस एप्लिकेशन व्यावसायिक लोगों द्वारा ग्राहकों के लिए दस्तावेज़ बनाने, व्यवस्थित करने और प्रस्तुत करने के लिए उपयोग किए जाने वाले सबसे सामान्य उपकरण हैं। कुछ लोगों का मानना है कि वे इन एप्लिकेशन के बिना काम

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
फील्डविवरण
vsizeवर्चुअल मेमोरी साइज (बाइट्स में)
rssरेजिडेंट सेट साइज (पेजेस की संख्या में)
_SC_PAGE_SIZEसिस्टम पेज साइज (बाइट्स में)