【发布时间】:2012-07-25 10:42:41
【问题描述】:
我一直在研究减少应用程序的内存占用。继上一个问题之后:GDB - can I find large data elements in memory 我已经找到并删除了大多数最大的罪魁祸首。
nm --size-sort 从可执行文件的 .bss 部分中找到大项目非常宝贵。
在 pmap 中查看的内存占用已大幅下降。但是在另一个系统(Ubuntu Pangolin,gcc 4.6.3)上继续这项工作时,我注意到正在运行的进程的内存占用是完全合理的,而且肯定比 .bss 的大小要小得多。
通过调试器运行代码,看起来 .bss 部分中的最大符号在访问数据之前并没有真正被分配(即我可以设置一个数组 大符号之一的元素,内存占用增加了 16MB)。
.bss 部分只是零初始化,因此很容易想象一个实现为它分配虚拟地址空间,但在使用之前实际上并不分配任何实际内存。
这是行为上的真正差异,还是系统之间报告的差异?
【问题讨论】: