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