Heim > Backend-Entwicklung > C++ > Wie kann ich die Laufzeitspeichernutzung eines C-Programms unter Linux genau abrufen?

Wie kann ich die Laufzeitspeichernutzung eines C-Programms unter Linux genau abrufen?

Mary-Kate Olsen
Freigeben: 2024-12-11 09:34:14
Original
208 Leute haben es durchsucht

How Can I Accurately Retrieve a C   Program's Runtime Memory Usage on Linux?

Laufzeitspeichernutzung in C mit /proc/pid abrufen

In C kann es schwierig sein, Informationen über die Speichernutzung eines Programms zur Laufzeit zu erhalten . Trotz der Versuche, getrusage() zu verwenden, stieß das Poster durchweg auf Nullwerte. Es gibt einen alternativen Ansatz, bei dem Dateien im Verzeichnis /proc/pid abgefragt werden.

Auf Linux-Systemen enthält /proc/pid prozessspezifische Informationen, einschließlich der Speichernutzung. Eine der zuverlässigsten Dateien für diesen Zweck ist /proc/self/stat. Durch das Parsen dieser Datei können wir die folgenden Felder extrahieren:

  • vsize: Größe des virtuellen Speichers des Programms in Kilobyte (KB)
  • rss: Resident-Set-Größe des Programms in KB (Menge des physischen Speichers). aktuell verwendeter Speicher)

Um diese Werte abzurufen, können wir die Funktion „process_mem_usage()“ verwenden. Funktion:

void process_mem_usage(double& vm_usage, double& resident_set)
{
    // Parse /proc/self/stat
    ifstream stat_stream("/proc/self/stat");
    stat_stream >> ... >> vsize >> rss;
    stat_stream.close();

    // Convert to KB
    long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024;
    vm_usage     = vsize / 1024.0;
    resident_set = rss * page_size_kb;
}
Nach dem Login kopieren

Innerhalb unserer main()-Funktion können wir process_mem_usage() verwenden, um die Nutzung des virtuellen Speichers und die Größe des residenten Satzes zu drucken:

int main()
{
    double vm, rss;
    process_mem_usage(vm, rss);
    cout << "VM: " << vm << "; RSS: " << rss << endl;
}
Nach dem Login kopieren

Mit diesem Ansatz können wir Erhalten Sie zur Laufzeit genaue Informationen zur Speichernutzung des aktuellen Programms.

Das obige ist der detaillierte Inhalt vonWie kann ich die Laufzeitspeichernutzung eines C-Programms unter Linux genau abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage