0

我正在尝试评估一组 python 脚本在无交换机器上的性能。

使用该命令监视进程top会得到一个比常驻内存大小略大的虚拟内存大小。

此时,虚拟内存指的是什么?它包括常驻内存吗?

编辑:根据评论删除python标签不相关

4

2 回答 2

2

有两点,为什么 top 在这种情况下列出虚拟内存使用情况是有意义的:

  1. 如前所述,有内存映射。这样一来,并非所有映射到内存的东西都必须驻留在内存中。它还具有这样的效果,像共享库这样的常用文件只需加载到内存中一次,它们就被简单地映射到多个进程的虚拟地址空间中。

  2. 当你向 Linux 索要一些内存时,它只是记下,你在虚拟地址空间中拥有它,而实际上并没有提供它。这意味着,您可以自由地要求比可能提供的更多的内存,从而将 top 报告的数字放大为分配给您的虚拟内存。您只是不能使用所有这些内存,因为当内核内存不足时,OOM-killer 会简单地射击您。

这两点都非常清楚地表明,您仍然在完全虚拟化的内存系统下工作,只是无法完成将任意页面交换到磁盘以实现“优雅”降级的其他技巧。

于 2013-06-26T16:26:30.273 回答
0

不是编程问题,而是wotthehell。可执行文件及其共享库被内存映射到 RAM 中,而不是在可执行文件启动时一次全部加载。这减少了进程启动时间,还可以减少实际内存使用(如果不是可执行文件中的所有代码都需要用于执行任何操作)。这不是交换,但它是由 VM 系统完成的,因此算作虚拟内存。

于 2013-06-26T15:32:10.197 回答