Используемая память в байтах.Размер блока кучи Linux - PullRequest
0 голосов
/ 05 апреля 2011

Я использую valgrind, чтобы узнать, сколько байтов использует мое linux-приложение.Итак, итоги Valgrind показывают количество использованных блоков кучи.Таким образом, я хотел бы знать, каков размер этих блоков, чтобы узнать размер кучи.

здесь Сводка кучи Valgrind:

==2604== HEAP SUMMARY:
==2604==     in use at exit: 4,828,441 bytes in 1,416 blocks
==2604==   total heap usage: 389,448,458 allocs, 389,447,042 frees, 4,664,484,349 bytes allocated
==2604== 

Я не могупросто делайте блок / байты, потому что последний блок не обязательно выделен полностью.Спасибо

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Добавьте параметр --leak-check=full и valgrind покажет подробную сводку блоков по стеку вызовов.Вам также может понадобиться добавить --show-reachable=yes, если блоки все еще доступны.Оттуда вы можете использовать простую математику, чтобы узнать средний размер каждого типа блока.

==15210== 46,622 bytes in 1,626 blocks are still reachable in loss record 2 of 3
==15210==    at 0x4022724: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==15210==    by 0x80562A1: (within /bin/ls)
==15210==    by 0x80563D1: (within /bin/ls)
==15210==    by 0x8053B84: (within /bin/ls)
==15210==    by 0x804F686: (within /bin/ls)
==15210==    by 0x804FAEB: (within /bin/ls)
==15210==    by 0x406F02B: (below main) (in /lib/libc-2.6.1.so)
==15210==

Выше приведены блоки среднего размера:

$ echo $((46622/1626))
28
1 голос
/ 05 апреля 2011

На большинстве машин (я уверен, что на всех машинах i386 и x86_64) память управляется блоками по 4096 байт.

...