如何知道我的二进制可执行文件的内存占用量

时间:2014-03-18 11:29:27

标签: c memory memory-management openwrt

我想知道是否有办法知道用C语言编码的二进制可执行文件的内存占用量。

  

有关二进制可执行文件的信息:使用OpenWrt分支(态度调整)的工具链编译,其架构为x86

4 个答案:

答案 0 :(得分:10)

在Linux / Unix系统上,您可以使用size命令,例如:在我的Ubuntu系统上

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

由于这是OpenWrt,如果您有不同的架构,例如MIPS或ARM或其他东西,当然必须选择相应工具链的size命令。

这些部分具有以下含义

  • text表示可执行文件的代码大小
  • data是初始化数据部分,例如变量,例如int v = 17;char name[] = "Tom";
  • bss是未初始化或仅0已初步确定的部分,int a;double amount;
  • dec是整体尺寸,在本例中为102134 + 1776 + 11272 = 115182
  • hex最后也是整体尺寸,为十六进制值1c1ee = 115182

但是这不包括堆栈或任何动态堆内存。要查看运行时的总体内存使用情况,您必须查看pstop输出。

答案 1 :(得分:2)

要了解运行时的内存使用情况,在Linux系统上可以使用valgrindmemcheck工具。

答案 2 :(得分:0)

top

和一个名为

的高级版
htop

是监视在linux系统中运行的任何可执行文件的工具

答案 3 :(得分:0)

使用命令size <binary>获取二进制可执行文件的内存占用量。 有关更多信息,请查看尺寸手册(man size)。