我正在尝试评估无交换机器上的一组python脚本的性能。
使用top
命令监视进程会使虚拟内存大小略大于常驻内存大小。
此时,虚拟内存是指什么?它是否包括常驻记忆?
编辑:删除python标签,根据评论不相关
答案 0 :(得分:2)
有两点,为什么在这种情况下列出虚拟内存使用情况的最重要原因是什么:
正如所指出的,有记忆地图。有了这个效果,并不是映射到内存中的所有内容实际上都必须驻留在内存中。它还具有这样的效果,即共享库等常用文件只需要加载到内存中一次,它们只是映射到多个进程的虚拟地址空间。
当您向Linux询问某些内存时,只需注意一下,您在虚拟地址空间中拥有它而不实际提供它。这意味着,您可以自由地请求比可能提供的内存更多的内存,将top报告的数字作为分配给您的虚拟内存。你不能使用所有的内存,因为当内核内存不足时,OOM杀手只会射击你。
这两点都清楚地说明你仍然在一个完全虚拟化的内存系统下工作,这个系统无法完成将任意页面交换到磁盘以获得“优雅”降级的其他技巧。
答案 1 :(得分:0)
不是编程问题,而是wotthehell。可执行文件及其共享库被内存映射到RAM中,而不是在可执行文件启动时一次性加载。这减少了进程启动时间,并且还可以减少实际内存使用(如果不是您可以使用它执行的任何代码中的所有代码)。这不是交换,而是由VM系统完成的,因此算作虚拟内存。