我预计在运行程序后,top实用程序将显示我的程序使用的内存(VIRT列)等于或大于磁盘上的大小。当结果不同时,我感到很惊讶 - 光盘上的文件大小比前面显示的大。你能解释一下我的期望中有什么问题吗? 附:应用程序是使用gcc本地构建的。
答案 0 :(得分:1)
运行时,并非可执行文件的所有部分都会映射到内存中。
如果使用readelf -WS <executable>
检查可执行文件(假设是elf可执行格式),则可以看到文件部分列表。只有标记A (alloc)
的部分才会被加载。
例如,以.debug
开头的部分不会被映射,除非它在调试器下运行,并且这些部分通常是最大的。