ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Windows虚拟内存迁移到D盘:释放C盘空间与性能优化指南

Windows虚拟内存迁移到D盘:释放C盘空间与性能优化指南 1. 虚拟内存迁移这件事到底值不值得折腾C盘红了这是绝大多数Windows用户都会遇到的经典场景。你打开此电脑看到C盘那条进度条变成刺眼的红色系统开始弹窗提示磁盘空间不足然后你打开各种清理工具扫了一遍发现能删的垃圾文件加起来也就释放个两三G杯水车薪。这时候你打开C盘根目录勾选显示受保护的操作系统文件会看到一个叫pagefile.sys的文件体积通常和你物理内存差不多大8G内存的机器它可能占8G16G内存的机器它可能占16G甚至更多。这个文件就是虚拟内存的载体也叫页面文件。虚拟内存这个东西本质上是用硬盘空间模拟内存来用。物理内存不够的时候系统把暂时不活跃的数据从内存搬到硬盘上的页面文件里腾出内存给当前活跃的程序。这个机制从Windows NT时代就有了到现在Windows 11依然在用。它的存在让程序可以申请超过物理内存大小的地址空间也让系统在内存压力大的时候不至于直接崩溃。但问题在于Windows默认把页面文件放在C盘而且默认大小是系统管理——系统会根据你的物理内存和当前负载动态调整结果就是C盘被吃掉一大块空间。把虚拟内存从C盘迁移到D盘这个操作本身不复杂但围绕它的争议一直不少。有人说关了虚拟内存性能更好有人说迁移之后系统会变慢还有人说SSD时代虚拟内存根本没必要。这些说法各有各的道理但都不全面。我这篇文章想做的事情很简单把虚拟内存迁移这件事从头到尾讲清楚包括为什么要迁、迁之前要确认什么、具体怎么操作、迁完之后可能遇到什么问题、以及不同使用场景下该怎么调参数。不管你是C盘只剩几个G的普通用户还是跑本地大模型、搞深度学习、装了一堆开发环境的折腾型玩家都能从里面找到适合自己的方案。先给一个核心结论虚拟内存迁移到D盘对于C盘空间紧张的用户来说是性价比最高的操作之一。它不需要你删任何个人文件不需要重装系统操作时间不超过十分钟释放的空间却可能高达十几G甚至几十G。但前提是你的D盘得是固态硬盘如果是机械硬盘迁移之后系统响应速度会有可感知的下降。这一点后面会详细展开。2. 迁移之前必须搞清楚的几件事2.1 虚拟内存到底在干什么很多人对虚拟内存的理解停留在内存不够时拿硬盘顶这个层面这个理解不算错但太粗糙了。虚拟内存的核心作用是给每个进程提供一个独立的、连续的地址空间让程序不需要关心物理内存的实际布局。当程序访问一个不在物理内存中的地址时CPU会触发一个叫缺页中断的异常操作系统捕获这个异常后把对应的数据从页面文件加载到物理内存中然后让程序继续执行。整个过程对程序是透明的。页面文件除了充当内存的溢出区还承担了两个重要职责。第一是支持系统崩溃转储蓝屏的时候系统需要把内存中的调试信息写到页面文件里重启后再转存到MEMORY.DMP文件中。如果你把页面文件设得太小或者关掉蓝屏时就拿不到完整的转储信息排查问题会变得很困难。第二是预读取和后台预取Windows会利用页面文件预加载一些可能用到的数据提升程序启动速度。所以那些直接关掉虚拟内存的建议除非你的物理内存大到离谱且从不关心蓝屏调试否则不建议采纳。2.2 为什么默认在C盘以及为什么大家想迁走Windows默认把页面文件放在系统盘原因很简单系统盘通常是读写最频繁的盘也是系统最早能访问到的盘。在机械硬盘时代把页面文件放在系统盘可以减少磁头寻道时间提升换页效率。但到了SSD时代这个逻辑变了——SSD的随机读写延迟极低放在哪个盘差别不大反而C盘空间成了稀缺资源。C盘空间紧张的原因有很多。系统更新会留下Windows.old文件夹休眠文件hiberfil.sys会占用和内存等大的空间各种软件的缓存默认往AppData里塞微信和QQ的聊天记录默认存在文档文件夹里而文档文件夹默认在C盘。再加上页面文件本身C盘被吃掉几十G是常态。迁移页面文件到D盘相当于把一块固定的、可观的占用从C盘挪走而且不影响任何已安装软件的正常使用。2.3 迁移之前必须确认的三件事第一件事确认D盘是固态硬盘。这个判断方法很简单打开任务管理器切换到性能选项卡点击D盘看右下角类型那一栏写的是SSD还是HDD。如果是HDD迁移过去之后系统换页速度会明显下降尤其是内存压力大的时候你会感觉到程序切换变卡。这种情况下更推荐的做法是清理C盘其他内容而不是迁移页面文件。第二件事确认D盘有足够的剩余空间。页面文件的推荐大小是物理内存的1到1.5倍如果你有16G内存D盘至少要有20G以上的空闲空间。如果D盘本身也快满了那迁移过去只是把问题从一个盘转移到另一个盘没有实际意义。第三件事确认你没有开启BitLocker或者设备加密。如果D盘被BitLocker加密了修改页面文件设置可能会触发恢复密钥验证。虽然这个操作本身不会破坏加密但万一系统要求你输入恢复密钥而你又找不到就会很麻烦。可以在设置里搜索设备加密来确认状态。提示如果你用的是笔记本电脑且D盘是光驱位改的硬盘托架需要额外确认那个接口的速率。有些老笔记本的光驱位是SATA II接口速度只有3Gbps虽然对SSD的随机读写影响不大但连续读写会受限。3. 手把手操作把页面文件从C盘搬到D盘3.1 图形界面操作流程最稳妥的方式是通过系统属性来操作不需要动注册表也不依赖第三方工具。具体步骤如下。第一步右键点击此电脑选择属性在弹出的窗口中找到高级系统设置。如果你用的是Windows 11可能需要先点击相关链接里的高级系统设置。第二步在系统属性窗口中切换到高级选项卡点击性能区域的设置按钮。第三步在性能选项窗口中切换到高级选项卡找到虚拟内存区域点击更改按钮。第四步取消勾选自动管理所有驱动器的分页文件大小。这一步很关键不取消的话你没法单独设置每个盘。第五步在驱动器列表中选中C盘选择无分页文件然后点击设置按钮。系统会弹出一个警告说关闭页面文件可能导致系统不稳定点是确认。第六步选中D盘选择自定义大小然后在初始大小和最大值两栏填入你计算好的数值。关于数值怎么算下一节会详细讲。填好之后点击设置按钮。第七步点击确定保存所有设置系统会提示你需要重启才能生效。重启之后C盘的pagefile.sys会消失D盘会出现一个新的pagefile.sys。3.2 页面文件大小到底设多少合适这是被问得最多的问题也是网上说法最混乱的地方。微软官方给出的推荐值是初始大小为物理内存的1倍最大值为物理内存的1.5倍到3倍。但这个推荐值是基于机械硬盘时代的经验在SSD时代需要根据实际使用场景调整。对于普通办公和娱乐用户物理内存8G的情况下初始大小设4096MB最大值设8192MB就够用了。物理内存16G的情况下初始大小设4096MB最大值设8192MB也完全够用因为16G内存日常使用几乎不会触发大量换页。物理内存32G以上的用户初始大小设2048MB最大值设4096MB即可甚至可以考虑只在D盘设一个较小的固定值。对于开发者和内容创作者情况会复杂一些。如果你经常跑虚拟机、Docker、本地大模型推理、视频渲染内存压力会比较大页面文件需要留足余量。建议初始大小设为物理内存的1倍最大值设为物理内存的2倍。比如32G内存初始32768MB最大65536MB。虽然最大值看起来很大但页面文件是动态增长的只有真正需要时才会占用那么多空间。对于跑本地大模型的用户比如用Ollama加载7B或13B参数的模型模型权重会占用大量内存如果内存不够就会疯狂换页。这种情况下页面文件设大一些反而能避免程序崩溃。我实测过在16G内存的机器上跑Ollama的7B模型页面文件设8G初始、16G最大模型加载过程中页面文件会涨到10G左右如果不设这么大加载到一半就会报内存不足。注意不要两个盘都设页面文件。有些人想着C盘设一点、D盘设一点来分摊压力实际上这会导致系统在两个盘之间来回换页反而降低效率。只在一个盘上设要么C要么D不要同时设。3.3 命令行方式适合批量操作和脚本化如果你习惯用命令行或者需要在多台机器上重复这个操作可以用wmic命令来完成。以管理员身份打开命令提示符或PowerShell依次执行以下命令。先把C盘的页面文件关掉wmic computersystem set AutomaticManagedPagefileFalse wmic pagefileset where nameC:\\pagefile.sys delete然后在D盘创建新的页面文件初始4096MB最大8192MBwmic pagefileset create nameD:\\pagefile.sys,InitialSize4096,MaximumSize8192执行完之后重启系统即可。如果想验证设置是否生效可以用这个命令查看当前页面文件配置wmic pagefileset list brief命令行方式的好处是可以写进批处理脚本新装系统之后一键执行。但要注意wmic在较新的Windows版本中已经被标记为弃用虽然目前还能用但未来可能会被移除。替代方案是用PowerShell的Get-CimInstance和Set-CimInstance不过语法稍微复杂一些这里不展开。4. 迁移之后可能遇到的问题与排查方法4.1 重启后C盘pagefile.sys还在这种情况通常是因为自动管理所有驱动器的分页文件大小没有真正取消勾选或者设置之后没有点设置按钮就直接点了确定。Windows的虚拟内存设置界面有个反直觉的设计你修改完数值之后必须先点右边的设置按钮再点底部的确定否则修改不会生效。很多人在这里踩坑以为改了数值就行了结果重启后发现什么都没变。另一个可能的原因是系统还原或者某些安全软件锁定了页面文件配置。可以尝试暂时关闭系统还原或者退出安全软件后再操作。4.2 迁移后系统变卡如果D盘是机械硬盘变卡是正常现象。机械硬盘的随机读写延迟在10毫秒级别而SSD在0.1毫秒级别差距是100倍。内存压力大的时候系统需要频繁换页机械硬盘根本扛不住。这种情况下要么换SSD要么把页面文件迁回C盘如果C盘是SSD要么加内存。如果D盘确认是SSD但依然感觉卡可能是页面文件设得太小导致频繁扩容。页面文件从初始大小增长到最大值的过程中系统需要分配新的磁盘空间并迁移数据这个过程会有性能开销。解决办法是把初始大小设得大一些减少动态增长的概率。4.3 蓝屏时无法生成转储文件前面提到过页面文件承担着系统崩溃转储的职责。如果你把页面文件迁到D盘且C盘完全没有页面文件蓝屏时系统可能无法正确写入转储信息。解决办法是在C盘保留一个较小的页面文件专门用于转储。微软的建议是C盘页面文件至少保留物理内存257MB的大小或者至少1GB。但这样又会占用C盘空间所以需要在空间和调试能力之间做取舍。对于普通用户如果从不关心蓝屏转储C盘不设页面文件也没关系。对于开发者和运维人员建议C盘保留一个1GB到2GB的固定页面文件专门用于转储D盘再设一个大的用于日常换页。4.4 某些软件报错内存不足有些老软件或者游戏在启动时会检查页面文件大小如果发现页面文件比物理内存小就会报错。这种情况在迁移之后可能出现因为D盘的页面文件初始值可能设得比较小。解决办法是把初始大小调大或者临时把页面文件设回C盘。还有一种情况是软件硬编码了C盘的页面文件路径迁移之后找不到文件就报错。这种软件比较少见但确实存在。遇到这种情况只能在C盘保留一个小的页面文件来兼容。5. 不同场景下的虚拟内存策略5.1 普通办公与娱乐这类用户的特点是物理内存通常8G到16G日常使用浏览器、Office、视频播放器偶尔玩一些轻度游戏。页面文件迁移到D盘之后C盘释放8G到16G空间系统流畅度不受影响。建议设置D盘初始4096MB最大8192MB。C盘不设页面文件。如果C盘空间实在紧张还可以顺手把休眠文件关掉。以管理员身份运行命令提示符执行powercfg -h off可以释放和物理内存等大的空间。代价是失去休眠功能和快速启动功能但换来的空间很可观。5.2 开发者与虚拟机用户这类用户通常32G内存起步跑IDE、数据库、Docker、虚拟机内存压力大换页频繁。页面文件需要设大一些建议D盘初始设为物理内存的1倍最大设为2倍。如果D盘空间不够可以考虑加一块专门的SSD来放页面文件和虚拟机镜像。对于用WSL2的用户WSL2本身会占用大量内存而且它的内存回收机制比较激进容易触发换页。建议把页面文件设大同时限制WSL2的内存使用上限。可以在用户目录下创建.wslconfig文件写入memory8GB来限制。5.3 本地大模型与AI推理用户跑Ollama、ComfyUI、Stable Diffusion这类工具的用户内存和显存都是瓶颈。模型加载时会把权重读入内存如果内存不够系统会疯狂换页。这种情况下页面文件的大小直接影响模型能不能加载成功。建议D盘初始设为物理内存的1.5倍最大设为3倍。比如32G内存初始49152MB最大98304MB。另外ComfyUI和Ollama的模型文件默认存在C盘的用户目录下这些文件动辄几个G到几十个G是C盘空间杀手。建议把这些工具的模型目录也迁移到D盘。Ollama可以通过设置环境变量OLLAMA_MODELS来指定模型路径ComfyUI可以在配置文件里修改模型搜索路径。5.4 多系统与Linux用户如果你装了Windows和Linux双系统Linux的交换分区swap和Windows的页面文件是两套独立机制。Linux的swap分区在安装时就已经划分好不受Windows虚拟内存设置的影响。但如果你在Linux下用虚拟机跑Windows那Windows的页面文件设置依然适用。对于Linux用户如果硬盘空间紧张可以考虑用swap文件代替swap分区这样调整大小更灵活。创建swap文件的命令是fallocate -l 8G /swapfile然后chmod 600 /swapfile、mkswap /swapfile、swapon /swapfile最后写入/etc/fstab实现开机自动挂载。6. 几个容易被忽略的细节和实操心得第一个细节页面文件迁移之后原来的pagefile.sys文件不会立即消失需要重启才会被删除。如果你重启之后发现C盘空间没有变化先确认是不是真的重启了而不是关机再开机。Windows 11的快速启动功能会让关机再开机变成一种混合休眠状态不会真正重新加载系统配置。要彻底重启可以在关机时按住Shift键或者在命令提示符里执行shutdown /r /t 0。第二个细节如果你用的是Windows家庭版组策略编辑器不可用但虚拟内存设置不受影响因为它是通过系统属性而不是组策略来配置的。这一点不用担心。第三个细节某些游戏的反作弊系统会检查页面文件配置如果发现页面文件不在C盘可能会拒绝启动。这种情况极少见但确实有玩家遇到过。解决办法是在C盘保留一个小的页面文件或者联系游戏客服确认。第四个细节迁移页面文件之后系统的内存压缩功能依然正常工作。内存压缩是Windows 10引入的特性它把不活跃的内存页压缩后继续放在内存里而不是直接写到页面文件。这个功能可以减少页面文件的使用频率对SSD寿命也有好处。不需要额外配置系统默认开启。第五个细节如果你用的是NVMe SSD且主板有多个M.2插槽建议把页面文件放在直连CPU的那个插槽上的SSD里而不是走芯片组通道的插槽。直连CPU的延迟更低换页效率更高。具体哪个插槽是直连CPU的需要查主板说明书。提示修改虚拟内存设置之后建议观察几天系统稳定性。如果出现莫名其妙的卡顿、程序崩溃、蓝屏先把设置改回自动管理排除一下确认是虚拟内存配置导致的问题再继续排查。7. 关于虚拟内存的几个常见误解第一个误解是SSD不需要虚拟内存。这个说法混淆了不需要和可以设小一点。SSD的随机读写速度快确实减少了对大容量页面文件的依赖但完全关闭虚拟内存会导致某些程序无法运行也会失去崩溃转储能力。正确的做法是设一个合理的值而不是关掉。第二个误解是虚拟内存越大越好。页面文件设得过大会占用大量磁盘空间而且系统在管理超大页面文件时会有额外的开销。更重要的是页面文件太大可能会掩盖内存不足的问题让你误以为系统还能撑住实际上已经在疯狂换页了。合理的做法是根据实际使用情况设置观察一段时间后再调整。第三个误解是迁移虚拟内存会提升性能。这个说法不准确。迁移虚拟内存的主要目的是释放C盘空间对性能的影响取决于D盘的速度。如果D盘和C盘都是SSD性能基本没差别如果D盘是HDD性能会下降。所以迁移的收益是空间不是性能。第四个误解是虚拟内存设置需要经常调整。实际上一旦设好之后除非你的使用场景发生重大变化比如从办公转向跑大模型否则不需要频繁调整。系统会根据负载自动使用页面文件你设的初始值和最大值只是边界。8. 迁移之外的C盘清理组合拳虚拟内存迁移只是C盘清理的一个环节单独用它可能释放十几G但如果配合其他操作释放几十G也不难。这里列几个和虚拟内存迁移搭配效果最好的操作。关闭休眠功能执行powercfg -h off释放和物理内存等大的空间。这个操作对台式机用户几乎没有影响对笔记本用户会失去休眠功能但换来的空间很可观。清理Windows.old文件夹。系统大版本更新后会留下这个文件夹体积可能达到十几G。可以在设置里的存储选项中清理也可以用磁盘清理工具。注意清理之后就无法回退到上一个系统版本了。迁移微信和QQ的聊天记录。这两个软件的默认存储路径都在文档文件夹里而文档文件夹在C盘。可以在软件设置里把存储路径改到D盘然后把原有数据剪切过去。微信的数据迁移比较麻烦建议在设置里直接改路径然后重新登录让软件自己迁移。清理各种开发工具的缓存。pip的缓存默认在C:\Users\用户名\AppData\Local\pip\cachenpm的缓存在C:\Users\用户名\AppData\Roaming\npm-cacheDocker的镜像默认在C盘。这些缓存加起来可能有好几个G。pip可以用pip cache purge清理npm可以用npm cache clean --force清理Docker可以在设置里修改镜像存储路径。把用户目录下的桌面、文档、下载等文件夹重定向到D盘。这个操作在文件夹属性里的位置选项卡中完成点击移动选择D盘的目标文件夹即可。这样以后这些文件夹里的内容就不会占用C盘空间了。这一套组合拳打下来C盘释放50G以上是很轻松的。虚拟内存迁移是其中操作最简单、风险最低、收益最直接的一个建议作为第一步来做。做完之后如果C盘还是紧张再考虑其他操作。最后分享一个我自己的习惯每次做完系统级的修改都会用系统自带的创建还原点功能手动创建一个还原点。这样万一改出问题可以快速回滚。虚拟内存设置虽然简单但万一遇到兼容性问题有还原点会省去很多麻烦。创建还原点的入口在系统属性的系统保护选项卡里选中C盘点击创建输入一个描述名称即可。整个过程不到一分钟但关键时刻能救命。
返回列表