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
Mary-Kate OlsenOriginal
2024-12-11 09:34:14170Durchsuche

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;
}

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;
}

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!

Stellungnahme:
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