虚拟内存原理与配置指南:告别内存不足与OOM
2026/9/16 5:24:00 网站建设 项目流程

1. 从一次卡死谈起:虚拟内存到底在解决什么问题

先讲个真实场景。前阵子公司一台开发机,配置并不差——i7 处理器、16G 内存、NVMe 固态硬盘。但跑着 Docker Desktop、VS Code、再加两三个浏览器窗口,系统就开始卡顿,接着弹出“内存不足”的红色提示,最后某个 Java 后端进程直接报 OutOfMemoryError,整个 IDE 都跟着崩了。排查了一圈,代码没问题,Docker 镜像也正常,最后发现——这台机器的虚拟内存(页面文件)被上个管理员设成了 0,系统在物理内存见底之后直接“躺平”,没有任何兜底机制。

这就是虚拟内存最容易被忽视、又最容易出问题的地方。很多人的理解停留在“硬盘划一块当内存用”,觉得现在内存都 16G、32G 了,根本不需要虚拟内存,干脆禁用它。实际上这个想法大错特错。虚拟内存(Windows 官方叫法:页面文件,Pagefile)不仅承担物理内存放不下的数据溢出,还同时负责 Windows 内核崩溃转储(Crash Dump)、内存映射文件等关键机制。把虚拟内存关了,等于让系统在内存吃紧时没有任何缓冲,OOM 几乎是必然的。

这篇文章不打算写那种“打开设置—勾选自定义大小—填两个数字—重启”的流水账。我会把虚拟内存的原理、设置逻辑、参数计算、常见坑一次性讲清楚,包括 16G 和 32G 物理内存分别怎么配、SSD 下有什么特殊技巧、遇到 OOM 怎么从虚拟内存维度排查。无论你是普通用户想解决“内存不足”弹窗,还是开发者在服务器上调优 Java/Elasticsearch 这类吃内存的应用,这篇都适用。

2. 先搞懂原理:虚拟内存、物理内存和 OOM 的关系

2.1 虚拟内存不是“假的”内存,而是一层地址空间抽象

这里要先纠正一个流行的误解。很多人问“虚拟内存有几 G,是不是我的内存就有几 G”,其实不是。虚拟内存本身是一个地址空间概念,它的大小由操作系统的位数决定:32 位系统最多 4GB 地址空间,64 位系统理论上能到 16EB(实际受硬件和操作系统版本限制)。

每个进程运行时,看到的是一块独立的连续地址空间。这块地址空间不一定要全部映射到物理内存上。当程序访问的页面不在物理内存中时,就会产生缺页中断(Page Fault),由操作系统把数据从磁盘换入物理内存。这个“把物理内存里暂时不用的数据挪到磁盘、需要时再换回来”的机制,就是页面交换(Paging)。

所以“虚拟内存”在日常语境里通常指的是“页面文件”——它是落在磁盘上的一个文件,Windows 用pagefile.sys这个名字来标记它。物理内存是“前台”,页面文件是“后台仓库”。前台放不下了,先把不急用的数据挪到仓库;等要用的时候再搬回来。

2.2 Windows 为什么要设页面文件,而不是全靠物理内存

Windows 内核设计上有几个硬性依赖:

  • 内核模式内存转储:如果系统蓝屏(BSOD),Windows 需要把内存内容写到磁盘,生成MEMORY.DMP文件。如果页面文件太小或不存在,转储会失败,蓝屏调试根本无从下手。
  • 内存映射文件:像杀毒软件、视频播放器、数据库引擎,都会把文件内容直接映射到进程地址空间,这部分映射不会被算作普通物理内存占用,但需要页面文件作为后备存储。
  • 内存超额分配:Windows 允许进程申请比物理内存大得多的虚拟地址空间(比如 Java 的堆内存设置)。真正常用的是其中一部分,但申请时必须有一个可以“落地”的存储介质,页面文件就是这个托底。

把页面文件完全关闭的后果,我在文章开头已经演示过了。系统在物理内存用完之后无法换出页面,内存申请直接失败,表现为应用崩溃、OOM、连系统桌面都刷不出来。你可以把物理内存想象成一张桌子,页面文件是旁边的杂物柜。桌子满了你不设置杂物柜,那新的东西就没地方放,只能扔地上——这就是 OOM。

2.3 OOM 到底是怎么发生的,它在 Windows 上意味着什么

OOM 是 Out Of Memory 的缩写。在 Java 里它叫java.lang.OutOfMemoryError,在操作系统层面,它通常意味着“内存提交(Commit)失败”。

Windows 有一个概念叫“提交限制(Commit Limit)”,它等于物理内存大小 + 所有页面文件大小。每次进程申请内存时(哪怕是只申请不使用的保留内存),Windows 都会在提交限制里预留一份“配额”。当这个配额耗尽时,内存申请就会失败,你在任务管理器里能看到内存占用并不高,但系统就是提示内存不足——这就是典型的提交限制撞顶。

我见过不少案例:16G 内存、页面文件设成 1G,任务管理器显示内存只用了 70%,但一跑 Docker 就崩。原因就是提交限制是 17G,而 Docker 相关进程、Linux 子系统(WSL2)的虚拟内存镜像动辄就占掉 10G+ 的提交量,加上其他软件,配额瞬间打满。这个问题用鲁大师或某某管家是查不出来的,必须通过任务管理器“性能”标签页里的“提交”项来看当前值。

3. 配置虚拟内存前必须知道的几个关键概念

3.1 初始大小和最大大小:为什么这两项让新手纠结

在系统属性里配置虚拟内存时,你会看到两个框:“初始大小”和“最大值”。很多人不知道这两个值的意义。

  • 初始大小:页面文件在系统启动时分配的最小物理空间。注意这里的“分配”是保留磁盘空间并写入文件结构,不是马上占满。操作系统在这个范围内不需要动态扩展,所以效率高。
  • 最大值:页面文件允许增长到的上限。如果内存负载超过初始大小,Windows 会按需扩展页面文件,直到达到最大值。

如果你设了初始大小 1GB、最大值 4GB,系统开始只会建一个 1GB 的 pagefile.sys,等内存吃紧再逐步扩大到 2GB、3GB、4GB。动态扩展过程中磁盘 I/O 会飙升——尤其是在机械硬盘上,整个系统会卡到几乎无法操作。这也是为什么很多老教程建议“初始大小和最大值保持一致”,目的就是避免这种动态扩展的卡顿。

不过,在 SSD 时代这个卡顿问题弱化了,但频繁扩展仍然会产生磁盘碎片和多余 I/O。我的习惯是:在常见场景(开发和长期开机)下,直接设为固定大小;在笔记本这种需要省磁盘空间的设备上,才考虑设一个小初始值 + 合理上限。

3.2 “系统管理的大小”到底靠不靠谱

不少人在配置界面直接选“系统管理的大小”,然后让 Windows 自己决定。这个选择在绝大多数情况下确实没问题,Windows 的计算规则相对保守,会在 C 盘预留足够空间。但问题在于:

  • 如果系统盘剩余空间很小,页面文件可能无法扩展到理想大小;
  • Windows 默认把页面文件放在 C 盘,而 C 盘又装了一堆软件、系统更新缓存,很容易塞满;
  • 某些安全软件会锁定 pagefile.sys,导致系统在需要扩展时失败。

所以我的建议是:如果你只有一个系统盘且不是极端场景,系统管理的大小确实省心;但如果你有独立的数据盘或者第二块 SSD,最好把页面文件移到非系统盘,并且固定大小。原因后面实操部分会说。

3.3 页面文件放在哪个盘:C 盘、D 盘还是专用分区

这个问题在各个论坛争论了十几年。我的经验总结如下:

  • 机械硬盘时代,把页面文件放到单独分区(在磁盘外侧)有明显性能优势,因为磁头不需要在内圈和外圈之间来回跑。
  • SSD 时代,因为寻址时间几乎为零,放哪个盘的区别不大。但是,如果你有两块物理硬盘,一块是系统 SSD,一块是普通 SATA SSD,建议把页面文件放到更快的那块上。注意是“物理硬盘”,同一块硬盘分两个区放在 D 区并不会比 C 区快。
  • 不推荐放到 U 盘或移动硬盘,延迟太高,页面交换时系统会近乎死机。

如果你有一块单独的闲置 SSD,专门用来放页面文件,这是理想方案。大厂服务器上的实际做法也类似:把 swap(对 Linux 来说)放到独立磁盘,避免跟业务 I/O 争抢。

4. 从原理到实操:一步步完成虚拟内存配置

4.1 打开正确的配置界面

先说路径。Windows 10/11 下最快的方式:右键“此电脑” → 属性 → 高级系统设置 → “高级”选项卡 → 性能框里点“设置” → 切到“高级”选项卡 → 虚拟内存框里点“更改”。

![操作路径示意图:此电脑右键属性 → 高级系统设置 → 性能设置 → 高级 → 虚拟内存更改]

注意弹出来的对话框默认勾选了“自动管理所有驱动器的分页文件大小”。如果要手动设置,第一步一定是把左上角这个勾去掉,否则你下面改的任何参数都会在保存时被系统覆盖回去。这个细节我在帮人远程排障时至少遇到五次:对方说“我明明改了呀,怎么重启又回去了”,无一例外是没取消这个勾。

4.2 16G 物理内存该填多少:场景化推荐值

针对“16G 内存虚拟内存设置多少”这个问题,给出一个可操作的标准答案,而不是一句“看情况”。

对于普通办公(浏览器多开、Office、微信、视频播放):

  • 推荐设置:初始大小 8192MB,最大值 12288MB(即 8GB 到 12GB)
  • 理由:日常负载下物理内存基本够用,页面文件主要是兜底突发峰值。8GB 的初始值足够应对峰值,不会频繁触发扩展。

对于开发机(IDE + Docker + 本地数据库):

  • 推荐设置:初始大小 16384MB,最大值 16384MB(固定为 16GB)
  • 理由:Docker 的 Linux 虚拟机镜像、Java/Node 构建工具都会产生大量内存提交,提交限制需要达到物理内存 + 页面文件 = 32GB 左右才比较从容。固定值省去动态扩展的额外开销。

对于游戏主机(大型 3A 游戏 + 语音软件 + 直播推流):

  • 推荐设置:初始大小 8192MB,最大值 16384MB
  • 理由:游戏主要吃显存和物理内存,虚拟内存过大反而占磁盘空间,过小会出现启动游戏时闪退。

注意我给的 16G 开发机方案用了 16GB 固定值,这会在 C 盘占用 16GB 空间。很多笔记本只有 512GB SSD,又装了一堆软件,空间吃紧是常事。这时可以适当降到 8GB 固定值,牺牲一些极端场景的从容度,但一般也能扛住。

4.3 32G 及以上内存:是不是就不用设虚拟内存了

接上篇。32G 物理内存的用户通常更困惑——都 32G 了,还需要虚拟内存吗?答案是:需要,但可以设小一点。

  • 推荐设置:初始大小 2048MB,最大值 4096MB
  • 场景:日常办公 + 轻度创作(PS、PR),32G 物理内存几乎不会触底,页面文件只需要保证系统机制正常运转。
  • 如果跑大型虚拟机、深度学习训练、渲染农场:建议设置为 8192MB 固定值。不要以为 32G 就万无一失,Windows 自身的 commit limit = 32G 物理内存 + 页面文件大小。某些内存泄漏的进程可以把 32G 全吃掉,没有页面文件的托底就直接蓝屏或者应用崩溃。

另外,Windows 11 的内存压缩机制(Memory Compression)也会占用一部分物理内存。开启压缩后,系统会把一部分“不太活跃”的页面压缩后存在物理内存里而不是写磁盘。这项机制在 32G 内存上其实足够用,但在 8G 内存的老机器上反而会增加 CPU 开销。因此 32G 以上用户没必要去关闭它,保持默认即可。

4.4 SSD 硬盘上的虚拟内存设置技巧

SSD 用户最担心的一个问题是:频繁读写页面文件会不会伤固态硬盘寿命?这里要先破除一个夸张的说法——把页面文件放在 SSD 上确实会增加写放大,但远没有到“伤盘”的程度。以 256GB SSD 为例,页面文件按 8GB 计算,即便每天频繁交换写入 50GB,按 300 TBW 的标称寿命也要十几年才用尽。所以不必因噎废食。

不过 SSD 状态下有几个技巧值得提:

  1. 把页面文件移动到非系统 SSD:系统盘 C 盘本身有大量系统日志、临时文件、Windows Update 写入,再叠加页面文件的 I/O,比较容易和系统其他读写争抢。如果你的机器有一块从盘 SSD,把页面文件放过去收益明显。
  2. 关闭“自动管理”,手动固定大小:自动管理会在页面文件增长时产生额外的写放大。设固定值后,页面文件在重装系统前都不会变化,避免不必要的磁盘写入。
  3. 不要在页面文件所在分区开启 BitLocker 加密(如果你在乎性能的话):加密后的读写会经过加解密流程,对页面交换这种高频小 I/O 影响比较大。
  4. 预留至少 10% 的剩余空间:SSD 剩余空间太少会导致垃圾回收效率下降,整个盘变慢。设页面文件前先看一眼分区剩余容量。

4.5 实操步骤:手动设置页面文件并验证生效

下面是一次完整的操作序列,按这个走基本不会出岔子:

  1. Win + R,输入sysdm.cpl,回车;
  2. 切到“高级”选项卡,在“性能”框中点“设置”;
  3. 再次切到“高级”,在“虚拟内存”框中点“更改”;
  4. 取消勾选“自动管理所有驱动器的分页文件大小”;
  5. 选中 C 盘,然后选“自定义大小”,输入初始大小和最大值;
  6. 点“设置”按钮——这一步非常重要,光输入数字不点“设置”,关闭窗口后等于没改;
  7. 点“确定”,系统会提示重启后生效,按提示重启。

重启后如何验证?按Ctrl + Shift + Esc打开任务管理器,切到“性能”→ 内存,右下角能看到页面文件的使用情况。更精确的方式是打开“资源监视器”(Win + Rperfmon /res),找到“内存”页里的“硬错误”计数——硬错误表示需要从磁盘读取页面文件的次数,如果数值过高说明物理内存不够用,页面文件在频繁换入换出。

另外可以用命令行查看当前页面文件配置:

Get-CimInstance Win32_PageFileUsage

输出里能看到当前页面文件的分配大小、当前使用量、峰值使用量,可以直接判断“之前给的初始值是否够用”。

5. 那些年我们踩过的坑:配置错误与极端情况补救

5.1 页面文件设成了 0,系统提示“虚拟内存不足”怎么办

这是最常见的故障场景。处理方法不复杂:

  1. 重启时连续按F8Shift + 重启进入高级启动选项;
  2. 选择“安全模式”进入系统(安全模式下仍会使用默认页面文件机制);
  3. 按上面 4.5 节的步骤,将虚拟内存重新设为系统管理或自定义大小;
  4. 重启进入正常系统,检查 pagefile.sys 是否存在(默认在 C 盘根目录,需要开启“显示隐藏系统文件”才看得到)。

如果系统已经连安全模式都进不去,可以通过 Windows 安装 U 盘引导进入恢复环境,打开命令行执行regedit,定位到HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management,手动校验PagingFiles键值。非紧急情况不推荐新手直接动注册表,容易把系统搞到起不来。

5.2 32G 内存还提示“内存不足无法打开此网页”

有一种情况经常让人误解:物理内存 32G,用 Chrome 打开网页时浏览器显示“内存不足无法打开此网页”。这种问题跟物理内存没关系,通常是单个进程的地址空间或提交额度受限,以及浏览器自身的进程数达到上限。

排查顺序:

  • 任务管理器 → 性能 → 内存,看“提交”项的数值是不是接近上限;
  • 如果是,说明是页面文件大小不够,按 4.3 节增大页面文件;
  • 如果提交值还很低,说明是浏览器进程本身的限制。Chrome 每个标签页一个进程,进程数太多会触碰 Windows 的 64 位进程数上限,普通用户几乎碰不到这个墙,但跑自动化脚本的开发者可能会。

5.3 Docker Desktop 和 WSL2 的内存占用如何配合虚拟内存

Docker Desktop 在 Windows 上默认使用 WSL2(Linux 子系统)。WSL2 有一个特点:它使用一个虚拟硬盘文件(ext4.vhdx),并且会自己管理内存。你在 Docker Desktop 设置里可以配置分配的物理内存上限(默认往往是物理内存的一半)。但要注意:

  • WSL2 的实际内存使用不是占“物理内存 + 页面文件”的简单关系,它内部有一个内核态的页面回收机制,外部看起来内存占用很大,实际上很多是缓存。
  • 当你启动多个容器(比如 Elasticsearch、Kafka、Redis 都跑在 Docker 里)时,WSL2 的虚拟内存地址空间会暴涨,这时页面文件如果太小,会出现容器被 kill 掉但没有明确 OOM 日志的情况。
  • 推荐的调整方式:Docker Desktop → Settings → Resources → Advanced,把 Memory 限制在物理内存的 60%-75%,同时把 Swap 打开(设 2GB-4GB)。这个 Swap 是 WSL2 内部使用的,跟 Windows 的页面文件不同,别搞混。

我实测过一台 16G 内存的机器:Windows 页面文件固定 16GB,加上 WSL2 内部的 Swap 4GB,Elasticsearch + Kafka + Redis 三个容器稳定运行,再也没有出现过容器无故重启。

5.4 Java 开发环境中的 OOM:别急着怀疑代码

在 Java 服务报OutOfMemoryError: Java heap space时,很多人第一反应是调大 JVM 堆参数。这个方向没错,但如果系统本身的提交限制不够,调再大也白搭。

举个例子:JVM 启动时设置了-Xmx4g,意思是最多申请 4GB 堆内存。JVM 并不是一次性把 4GB 全部锁定,而是在运行中逐步分配。如果系统物理内存还剩 6GB,但页面文件只有 2GB,提交上限已经满了——即使物理内存空闲,JVM 申请内存也一样失败。

这就是为什么 Java 服务报 OOM 时,要同时看系统层面的两个指标:

  • 任务管理器中的“提交”当前值是否接近上限;
  • 系统事件查看器(eventvwr)里有没有“进程 xxx 因内存页错误被终止”的记录。

如果两者都正常,再回头调 JVM 参数。很多人本末倒置,一上来就把-Xmx调大一倍,结果其他进程开始 OOM,一个都没跑掉。

5.5 Elasticsearch、Kafka 这类吃内存组件的虚拟内存调优建议

Elasticsearch 是基于 Lucene 的搜索引擎,对 OS 底层的内存管理非常敏感。官方建议:

  • 把 ES 堆内存设置为物理内存的一半(但不超过 31GB,因为 JVM 压缩指针限制);
  • 剩余物理内存全部留给 Lucene 的 OS 文件缓存,ES 不会主动管理这部分缓存,而是依赖操作系统的页面缓存。

这就意味着,跑 ES 的 Windows 机器上,页面文件如果太小,OS 不得不把文件缓存的数据频频换出,严重影响查询性能。我的建议:ES 所在机器,物理内存 32G 时,页面文件设置为 4GB-8GB 固定值,同时确保系统盘有足够剩余空间。

Kafka 的 OOM 多见于 Broker 端 JVM 堆溢出。Kafka 本身不保存消息数据(依赖日志段文件挂在磁盘上),但它的 Socket 发送缓冲和批量消息压缩需要大量堆内存。Windows 上跑 Kafka 建议:

  • JVM 堆设置为不超过 8GB(官方推荐同机型对吞吐量和 GC 开销有个平衡点);
  • 页面文件固定为物理内存的 25% 左右即可,不需要太大;
  • 监控硬错误计数,如果持续过高,说明物理内存确实不足,优先扩内存而不是扩页面文件。

5.6 常见错误配置速查表

症状大概率原因推荐修正
系统弹“虚拟内存不足”页面文件为 0 或过小重新开启页面文件,设 8GB 以上
浏览器频繁“内存不足无法打开此网页”提交限制撞顶增大页面文件最大值
游戏启动闪退物理内存吃紧,无兜底设 8GB 固定页面文件
Docker 容器无故被杀WSL2 内存限制 + 页面文件不足调升 WSL2 Memory,增大页面文件
Java 应用 OOM,物理内存还充足提交限制耗尽增大页面文件,或降低其他进程内存占用
开机后页面文件在 C 盘占满空间初始/最大值设太大执行cleanmgr或移动到其他盘

6. 一个你可能没注意过的隐藏细节:页面文件和休眠文件的区别

有些教程会把“页面文件”和“休眠文件(hiberfil.sys)”混为一谈,其实它们完全是两码事。

  • 页面文件(pagefile.sys):提供虚拟内存交换;
  • 休眠文件(hiberfil.sys):保存休眠时内存的完整镜像,方便下次快速恢复。

当你启用“快速启动”(Windows 10/11 默认开启)时,系统每次关机都会把内核会话和驱动写入休眠文件,这个文件大小通常是物理内存的 70%-100%。如果你在 C 盘看到 hiberfil.sys 文件占了好几个 G,它跟虚拟内存无关,想要释放空间需要:

powercfg /h off

关闭快速启动后,开机速度会慢一些,但能释放出一块可观磁盘空间。这个细节跟虚拟内存配置的关系在于:很多人误把 hiberfil.sys 当成 pagefile.sys,以为页面文件吃掉了太多磁盘,然后在配置页面把虚拟内存调小甚至关闭——方向就搞反了。

另一个容易混淆的是“系统保护”功能里的还原点,它也会占用 C 盘空间。调完页面文件后,如果磁盘还是紧张,建议顺便检查“系统保护”的设置,限制还原点占用的空间比例。

7. 实战复盘:一台 16G 笔记本从频繁 OOM 到稳定运行的完整调整过程

把前面的零散知识点串起来,用一个完整案例复盘。这周一台 ThinkPad X1 Carbon,16G 内存,512G SSD,系统 Windows 11。

现象:

  • 开着微信 + Chrome(约 15 个标签)+ 网易云音乐,内存占比 70%;
  • 再打开 PyCharm 写代码,过几分钟系统弹“内存不足”;
  • 启动 Docker Desktop 后,Chrome 标签页开始白屏,整个系统卡顿明显。

排查过程:

  1. 先看任务管理器内存页——“提交”项显示 14.7G / 16.5G,说明提交限制已经顶满;
  2. 打开资源监视器看“硬错误”,数值从 0 跳到每秒钟几十次,说明系统在疯狂请求磁盘换页;
  3. 检查页面文件配置,发现 C 盘页面文件被设为 512MB 到 1024MB,几乎等于没有;
  4. C 盘剩余空间只有 22GB,不足以直接设一个 16GB 固定页面文件。

调整方案:

  • 清理 C 盘(关闭休眠功能释放约 12GB,清理 Windows Update 缓存约 3GB);
  • 执行powercfg /h off,让 hiberfil.sys 消失;
  • 将页面文件设为固定大小 8192MB;
  • Docker Desktop 的 WSL2 内存限制从默认的 50% 降到 6GB,同时开启 WSL2 内部 Swap 2GB;
  • PyCharm 的堆从 2048MB 降到 1024MB(这个小项目根本用不了那么大堆)。

结果:

  • 重启后“提交”上限变为 16G 物理内存 + 8G 页面文件 = 24GB;
  • 同时跑原先那批软件,提交占用稳定在 17-18GB,不会顶满;
  • 硬错误计数归零;
  • 连续稳定运行一周,没有再出现内存不足弹窗。

这次排查的教训有两层。第一,OOM 未必是物理内存不够,很可能是提交限制设计不合理;第二,调优不是一味加大某个参数,而是让物理内存、页面文件、关键应用的配额形成一个供需平衡。

8. 最后分享几个排查内存问题时最常用的小工具

用系统自带工具能解决大多数问题,再补一个第三方小工具缩短排查时间。

  • 任务管理器 / 资源监视器:查看提交限制、硬错误、进程内存占用,这是第一步;
  • RAMMap(微软 Sysinternals 工具):看物理内存每一块的用途划分,尤其是驱动锁定内存、进程私有内存和文件缓存各自占了多少;
  • VMMap(同样来自 Sysinternals):分析单个进程的虚拟地址空间构成,Java 服务 OOM 时用这个定位是哪一类内存区域爆了;
  • Windows 事件查看器:出现内存相关崩溃时,系统日志里通常记录了崩溃进程名和错误代码,善用筛选器能省大量时间。

这几个工具的下载和使用都很轻量,不需要安装,解压即用。RAMMap 有一点需要注意:第一次打开会请求管理员权限,并且它会常驻系统托盘收集数据,用完记得退出;它还有一个“Empty Standby List”的按钮,可以把系统占用的待机缓存清掉以临时释放物理内存。另外强调一点,这种做法只是强制把缓存清空,重新跑应用时文件缓存又会回来,短暂缓解出现的“内存被占用”焦虑可以,但不持久。不过如果你只是想知道系统内存到底去哪了,RAMMap 的显示比任务管理器细得多。

写在桌面右下角的提醒

电脑内存这个事,平日里不出毛病时没人关心,等到弹窗了往往已经晚了。我的经验是,每隔一段时间检查一下“提交限制”和实际提交量的差距,尤其是经常跑大型软件的用户——这个差距就是系统面对内存突峰时的缓冲余量。

虚拟内存配置没有一套放之四海而皆准的数字,但掌握原则之后,你自己就能判断该设多大:物理内存小就多给页面文件一些空间;物理内存大就适量降低;有 SSD 就优先考虑性能和固定值;跑 Docker、虚拟机、数据库这类大户就要同时考虑提交限制和应用自身的内存配额。

下次当你再看到“内存不足”的提示,希望你不是先去百度搜“虚拟内存设置多少”,而是先打开任务管理器,看看提交值离上限还有多远。这是我在踩了无数次坑之后最想让你记住的一件事。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询