虚拟内存使用量与驻留集大小

虚拟内存使用量与驻留集大小

当我启动 php 脚本时,会ps aux发现 的数量非常大VSZ,大约 450MB。而 RSS(常驻集大小)大约为 10MB。根据维基百科,常驻集大小为is the portion of a process's memory that is held in RAM。但虚拟内存大小是否包括保存在其他地方(例如文件系统)的内存?虚拟内存究竟由什么组成?

答案1

虚拟内存(顾名思义)是对底层物理内存架构的抽象。每个进程都有自己的虚拟地址空间,当访问虚拟地址时,内存管理单元 (MMU) 首先将它们转换为硬件地址。进程虚拟地址空间中的数据可能位于主内存、磁盘、两者或某个其他外部内存中。但是,进程访问尚未在主内存 (MM) 中的每一页时,都会将其加载到 MM 中。因此,进程不会直接从磁盘读取,但它们的部分或大部分资源可能在任何给定时间驻留在外部内存中,因为可以交换页面以腾出空间给其他页面。

答案2

虚拟内存可能是:

  • 如果最近访问过数据或者没有释放 RAM 的压力,则在 RAM 上
  • 在交换区域(交换分区或交换文件)上(如果已分页)
  • 如果数据对应于内存映射文件(例如:共享库),则在文件系统上
  • 如果分配的页面尚未被访问,则无处可去(即不使用任何资源,特别是在 Linux 等过度使用内存的系统上)

第四点常常被人们忽视。

相关内容