Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to know the memory footprint of my binary executable

I wonder if there is a way to know the memory footprint of my binary executable coded in C language.

informations about binary executable : compiled with toolchain of OpenWrt branch (Attitude Adjustment) and its architecture is x86

like image 211
Anis_Stack Avatar asked Mar 18 '14 11:03

Anis_Stack


1 Answers

On a Linux/Unix system, you can use the size command for this, e.g. on my Ubuntu system

size /bin/sh
   text    data     bss     dec     hex filename
 102134    1776   11272  115182   1c1ee /bin/sh

Since this is OpenWrt, if you have a different architecture, e.g. MIPS or ARM or something else, you must pick the size command of the appropriate toolchain, of course.

The sections have the following meaning

  • text denotes the code size of the executable
  • data is initialized data section, e.g. variables, like int v = 17; or char name[] = "Tom";
  • bss is the uninitialized or simply 0 initiailized section, int a; or double amount;
  • dec is the overall size, in this case 102134 + 1776 + 11272 = 115182
  • hex finally is also the overall size, as a hex value 1c1ee = 115182

But this does not include the stack or any dynamic heap memory. To see the overall memory usage at runtime, you must look at ps or top output.

like image 75
Olaf Dietsche Avatar answered Sep 21 '22 17:09

Olaf Dietsche