公众号旧文

电脑、手机、服务器的虚拟内存是一回事吗?

作者:胖子阅读 —

在 Windows XP 时代,相信你一定在 C 盘里看到过 pagefile.sys

图片

电脑里叫“页面文件”,手机里叫“内存扩展”,服务器上叫“swap”,看起来像是三种不同的东西。

那它们到底是不是一回事?

答案是:本质是同一个机制,但实现方式和策略差别很大。

一、先说本质:虚拟内存到底是什么

虚拟内存,是操作系统的一种兜底机制。

当内存不够用的时候,系统会把一部分暂时不用的数据,挪到硬盘上,腾出空间给当前更重要的程序使用。

换句话说就是用硬盘假装成内存的一部分。

但要注意,这只是假装。因为硬盘的速度远远比内存慢:

  • 内存:纳秒级
  • SSD:微秒级

所以虚拟内存的意义不是让电脑更快,而是让系统在内存不够时不至于直接崩掉。

二、电脑:页面文件(Pagefile)

在 Windows 电脑上,这个机制叫做页面文件,对应一个文件:

C:\pagefile.sys

它是系统自动管理的,一般用户很少去手动调整。

特点很简单:

  • 完全基于文件
  • 深度绑定 Windows 内存管理
  • 即使内存很大,也通常建议保留

很多程序会默认页面文件一定存在,如果你关闭,有些软件甚至会异常。

三、服务器:Swap

到了服务器(尤其是 Linux),这个东西叫 swap。

它有两种形式:

  • swap 分区(独立划一块磁盘空间)
  • swap 文件(类似 Windows)

相比 Windows,Linux 的 swap 更灵活,可以调优,比如:

  • swappiness决定系统多积极使用 swap
  • 可以动态开启/关闭

在服务器场景中,swap 的使用策略非常讲究:

  • 小内存机器:swap 是救命的
  • 大内存服务器:为了避免性能抖动,有时反而会关闭 swap

因为一旦服务器开始频繁使用 swap,性能会明显下降,甚至出现卡死但不崩的情况。

四、手机:所谓内存扩展

手机厂商这几年很喜欢宣传 12GB + 8GB 内存扩展 = 20GB 体验

听起来很猛,但本质上,还是那一套东西。

只不过手机的实现更复杂,也更激进:

1️⃣ Android

通常是几种技术组合:

  • zram(内存压缩)
  • 少量 swap
  • 存储空间扩展

优先级一般是先压缩 → 再写磁盘 → 实在不行杀后台。

2️⃣ iOS

苹果则更干脆:

  • 大量使用内存压缩
  • 极少依赖 swap
  • 不够用就直接杀后台

所以你会发现 iPhone 很少卡死,但后台容易被清。

五、关键区别:理念不同

虽然三者本质一样,但思路完全不同:

平台 策略
Windows 稳定优先,尽量不崩
Linux服务器 可控优先,避免性能波动
手机 流畅优先,宁可杀后台

你可以用一个比喻来理解:

  • 内存 = 办公桌
  • 磁盘 = 仓库

当桌子放不下时:

  • Windows:把东西整齐放进一个固定箱子
  • Linux:可以放仓库,但要看情况
  • 手机:

六、一个常见误区

很多人看到虚拟内存,会以为内存变大了。

但更准确的说法是系统更能撑,但会变慢。

因为一旦数据被换到磁盘,再读回来就会明显变卡。

所以虚拟内存的本质不是性能增强,而是稳定性增强。

七、一句话总结

电脑的页面文件、服务器的 swap、手机的虚拟内存扩展,本质上都是同一个东西。

但不同设备,根据自身场景,选择了完全不同的策略:

  • 电脑:不崩最重要
  • 服务器:可控最重要
  • 手机:流畅最重要

也正因为如此,你在不同设备上,才会感觉它们一样,又不太一样。

扩展阅读:


终于决定,教大家白嫖谷歌云(GCP)服务器

如何翻译 At KFC, we do chicken right !

你以为 SSH 只是远程登录?不,它实际上是一个加密通信工具箱!

30 年网龄,却在今天才搞懂 SwitchyOmega