程序加载后的内存使用量 - 与TOP统计量不匹配
问题描述:
我期望在运行程序后,top utility会显示我的程序使用的内存(VIRT列)等于或大于磁盘大小。当结果不同时,我感到很惊讶 - 光盘上的文件大小竟然比上面显示的大。你能解释我的期望有什么不对吗...... P.S.应用程序是使用gcc构建的本地应用程序加载后的内存使用量 - 与TOP统计量不匹配
答
当您运行可执行文件时,并非所有部分都映射到内存中。
如果您使用readelf -WS <executable>
(假设为elf可执行格式)检查可执行文件,则可以看到文件节的列表。只有标记为A (alloc)
的部分才会加载。
例如,以.debug
开头的段不会被映射,除非它在调试器下运行,并且这些段通常是最大的。
你能解释为什么你会这么想吗?除非应用程序不做任何事情,除非立即返回,否则通常会有使用内存的共享库,数据段等。如果您预期使用的内存不仅仅是文件,为什么现在感到惊讶的是它更多? –
这是我的错误 - 看看我更新的问题。 – Mikola