Sim, tomar o endereço do limite final menos o endereço do limite inicial fornecerá o tamanho do heap nesse processo específico.
O cálculo pode ser realizado no shell com
hsize=$(( 0x45937000 - 0x00a00000 + 1 ))
printf 'heap is %d bytes (about %d MiB)\n' \
"$hsize" "$(( hsize / 1024 / 1024 ))"
Com o GNU awk
analisando o maps
"arquivo" para PID $pid
(o GNU awk
precisa de -n
para poder reconhecer inteiros não decimais):
awk -n -F '[- ]' '/\[heap\]/ {
h = "0x" $2 - "0x" $1 + 1
printf("heap is %d bytes (%.2f MiB)\n", h, h/1024/1024) }' /proc/$pid/maps
Veja também esta questão relacionada: Como leio de / proc / $ pid / mem no Linux?
Esta questão no ServerFault também pode ser útil, dependendo do que você gostaria de fazer: Despeje a memória de um processo do Linux para arquivar