GNU/Linux >> Tutoriales Linux >  >> Linux

Examinando las estadísticas de memoria del montón de C/C++ en gdb

@fd:el error de RedHat tenía su respuesta.

El mallinfo La función ha quedado obsoleta y no se actualizará. Una verdadera API de estadísticas de consulta es TDB. Hoy tienes malloc_stats y malloc_info . No puedo encontrar ninguna documentación sobre ninguno de los dos, pero esto es lo que te dan.

¿Está lo suficientemente cerca de lo que necesita?

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

Si puedes cambiar el código:

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

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

En GDB, puede call dumpMallinfo() .


Linux
  1. ¿Cómo determinar la codificación de caracteres que usa una terminal en un programa C/c++?

  2. ¿Hay una GUI de C++ gdb para Linux?

  3. Cómo provocar mediante programación un volcado del núcleo en C/C++

  4. Establezca un punto de interrupción en el código C o C ++ mediante programación para gdb en Linux

  5. ¿Cómo obtener el nombre de usuario en C/C++ en Linux?

Obtenga estadísticas de uso de memoria con esta herramienta de línea de comandos de Linux

Comando Linux vmstat - Herramienta para informar estadísticas de memoria virtual

Cómo ejecutar programas C/C++ en Linux [Terminal y Eclipse]

Una guía para el comando vmstat en Linux

¿Cómo uso GDB en Eclipse para la depuración de C/C++?

Java usa mucha más memoria que el tamaño del montón (o el tamaño correcto del límite de memoria de Docker)