不可能的 pmap 结果

不可能的 pmap 结果

根据系统监视器 (Ubuntu 10.04),Nautilus 占用 450 MiB。

$pmap <PID of Nautilus>
...
total          1578276K

这里报告的是pmap1.5 GiB 内存吗?我试图找出是什么占用了 450 MiB,这样我就可以推断出我做错了什么,或者问题出在哪里。

答案1

程序使用了多少内存并没有简单的概念。

的输出pmap描述了进程映射的所有虚拟内存。映射意味着进程可以通过指针访问该数据,而无需发出任何进一步的命令来加载数据或请求访问。映射的虚拟内存并不总是在 RAM 中:它可以被换出,也可以在文件中。例如,程序使用的所有共享库都映射到使用它们的每个进程中,但(在大多数情况下)整个系统的 RAM 中只保留一份副本,并且该副本不需要完全加载到内存中。内存(需要的部分将从磁盘文件中加载)。 1.5GB 这个数字包括进程的所有代码、静态数据、共享内存和自己的数据。这不是一个非常有意义的数字。

pmap是一个简单的重新格式化/proc/$pid/maps了解 Linux /proc/id/maps解释了各列的含义。

450MB 这个数字(我认为)是进程的驻留集,即当前 RAM 中的非共享内存。这包括仅属于进程的数据(并且可能会被换出),以及进程已打开用于写入的文件(磁盘缓冲区,可能会被逐出以便稍后从文件中重新加载)。

您将无法轻松进一步分解 450MB 内存。这是程序作者的工作,需要调试工具。

相关内容