程序加载后的内存使用量 - 与TOP统计量不匹配

问题描述:

我期望在运行程序后,top utility会显示我的程序使用的内存(VIRT列)等于或大于磁盘大小。当结果不同时,我感到很惊讶 - 光盘上的文件大小竟然比上面显示的大。你能解释我的期望有什么不对吗...... P.S.应用程序是使用gcc构建的本地应用程序加载后的内存使用量 - 与TOP统计量不匹配

+0

你能解释为什么你会这么想吗?除非应用程序不做任何事情,除非立即返回,否则通常会有使用内存的共享库,数据段等。如果您预期使用的内存不仅仅是文件,为什么现在感到惊讶的是它更多? –

+0

这是我的错误 - 看看我更新的问题。 – Mikola

当您运行可执行文件时,并非所有部分都映射到内存中。

如果您使用readelf -WS <executable>(假设为elf可执行格式)检查可执行文件,则可以看到文件节的列表。只有标记为A (alloc)的部分才会加载。

例如,以.debug开头的段不会被映射,除非它在调试器下运行,并且这些段通常是最大的。