GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Untersuchen der C/C++ Heap-Speicherstatistiken in gdb

@fd - der RedHat-Fehler hatte Ihre Antwort.

Der mallinfo Die Funktion ist veraltet und wird nicht aktualisiert. Eine echte Abfragestatistik-API ist TDB. Heute haben Sie malloc_stats und malloc_info . Ich kann keine Dokumentation zu beiden finden, aber hier ist, was sie Ihnen geben.

Ist das nah genug an dem, was Sie brauchen?

(gdb) call malloc_stats()
Arena 0:
system bytes     =     135168
in use bytes     =         96
Total (incl. mmap):
system bytes     =     135168
in use bytes     =         96
max mmap regions =          0
max mmap bytes   =          0

(gdb) call malloc_info(0, stdout)
<malloc version="1">
<heap nr="0">
<sizes>
<unsorted from="1228788" to="1229476" total="3917678" count="3221220448"/>
</sizes>
<total type="fast" count="0" size="0"/>
<total type="rest" count="3221220448" size="3917678"/>
<system type="current" size="135168"/>
<system type="max" size="135168"/>
<aspace type="total" size="135168"/>
<aspace type="mprotect" size="135168"/>
</heap>
<total type="fast" count="0" size="0"/>
<total type="rest" count="3221220448" size="3917678"/>
<system type="current" size="135168
/>
<system type="max" size="135168
/>
<aspace type="total" size="135168"/>
<aspace type="mprotect" size="135168"/>
</malloc>

Wenn Sie den Code ändern können:

#include <malloc.h>
#include <stdio.h>

void dumpMallinfo(void) {
  struct mallinfo m = mallinfo();
  printf("uordblks = %d\nfordblks = %d\n", m.uordblks, m.fordblks);
}

In GDB können Sie call dumpMallinfo() .


Linux
  1. Gibt es eine C++ gdb GUI für Linux?

  2. Wie kann meine C/C++-Anwendung feststellen, ob der Root-Benutzer den Befehl ausführt?

  3. Linux-Tool zum Überprüfen der Rechtschreibung von Kommentaren im c/c++-Quellcode

  4. So überprüfen Sie die Heap-Größe für einen Prozess unter Linux

  5. Verfügbare Netzwerkschnittstellen in C/C++ finden?

Rufen Sie mit diesem Linux-Befehlszeilentool Statistiken zur Speichernutzung ab

Linux-vmstat-Befehl – ​​Tool zum Berichten von Statistiken zum virtuellen Speicher

So führen Sie C/C++-Programme unter Linux aus [Terminal &Eclipse]

Eine Anleitung zum vmstat-Befehl in Linux

Wie verwende ich GDB in Eclipse für C/C++-Debugging?

Java verwendet viel mehr Speicher als die Heap-Größe (oder die richtige Größe des Docker-Speicherlimits)