GNU/Linux >> Linux Esercitazione >  >> Linux

Esame delle statistiche sulla memoria heap C/C++ in gdb

@fd - il bug di RedHat ha avuto la tua risposta.

Il mallinfo La funzione è stata deprecata e non verrà aggiornata. Una vera API per le statistiche delle query è TDB. Oggi hai malloc_stats e malloc_info . Non riesco a trovare alcuna documentazione su nessuno dei due, ma ecco cosa ti danno.

È abbastanza vicino a ciò di cui hai bisogno?

(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>

Se puoi modificare il codice:

#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, puoi call dumpMallinfo() .


Linux
  1. Tutorial:crea Vim come IDE C/C++ usando il plugin c.vim

  2. Esiste una GUI gdb C++ per Linux?

  3. Come causare a livello di codice un core dump in C/C++

  4. Imposta il punto di interruzione nel codice C o C++ a livello di codice per gdb su Linux

  5. come controllare la dimensione dell'heap allocata per jvm da linux

Ottieni statistiche sull'utilizzo della memoria con questo strumento da riga di comando di Linux

Comando Linux vmstat - Strumento per segnalare le statistiche sulla memoria virtuale

Come eseguire programmi C/C++ in Linux [Terminale ed Eclipse]

Una guida al comando vmstat in Linux

Come utilizzo GDB in Eclipse per il debug C/C++?

Java utilizza molta più memoria rispetto alla dimensione dell'heap (o dimensiona correttamente il limite di memoria Docker)