虚拟内存

虚拟内存是操作系统把磁盘空间临时当作内存用的机制,核心目的是让程序能用到比物理内存(RAM)更大的地址空间,同时隔离进程、简化内存管理。

它到底怎么工作

  • 每个进程拿到的是独立的虚拟地址空间,CPU 通过 MMU(内存管理单元)把虚拟地址翻译成物理地址。
  • 数据按页(通常 4KB)管理,正在用的页放物理内存,不常用的页换出(swap)到磁盘的页面文件/交换分区
  • 程序完全无感:访问到不在内存的页时,触发缺页中断,系统把页从磁盘调回内存再继续跑。

Windows / Linux 里的实际形态

  • Windows:叫“分页文件”(pagefile.sys),在系统盘里,大小可自动管理。
  • Linux:叫 swap,可以是 swap 分区或 swap 文件;内存够时基本用不到,不够时介入。
  • macOS:基于 Darwin,同样有专用 swap 文件,系统自动管,用户很少手动改。

常见误区

  • ❌ “虚拟内存就是卡顿元凶” → 频繁 swap 才卡,原因是物理内存真不够,不是虚拟内存本身的问题。
  • ❌ “32 位系统只能认 4GB 内存” → 这是虚拟地址空间限制,开 PAE 能认更多物理内存,但单进程仍受限。
  • ❌ “SSD 上开虚拟内存会写坏盘” → 现代 SSD 寿命足够,系统级 swap 写入量远没到伤盘程度。

实操建议

  • 物理内存 ≤8GB:保留系统托管虚拟内存,别手贱关掉,否则大负载或睡眠唤醒可能崩。
  • 物理内存 16GB+:可以设一个较小固定值(如 2–4GB)防止极端场景报错,或交给系统自动。
  • Linux 服务器:看 workload,数据库/Redis 这类吃内存的常建议 swapiness 调低(如 1–10),避免主动换出;编译/批处理可留 swap 保底。
  • NVMe SSD 用户:虚拟内存放系统盘即可,延迟极低,没必要挪到机械盘(反而更慢)。
上一篇
下一篇