在看之前需要了解的一些知识:
1.分页文件,就是虚拟内存的具象化,当你设置了虚拟内存到一个盘里面并重启电脑后,正常情况下,该盘里面会出现一个隐藏并受系统保护的文件pagefile.sys(你在该盘设置了多大虚拟内存,这个文件就有多大),这个文件就是分页文件。
2.在Windows系统中,当你想要更改一个文件时(包括删除,重命名等),如果这个文件正在运行,该操作是无法完成的。
一开始,我是在跑AI的时候了解到虚拟内存的,Win11默认虚拟内存设置是“自动管理驱动器的分页大小”,我也不知道它是怎么管理的,在我跑AI时会报错(16G物理内存,笔电)——原因就是虚拟内存开小了,于是我去手动修改虚拟内存的大小。在改虚拟内存时,我注意到:虚拟内存可以改到任何盘上,当时我就图省事,就在C盘里面放了24-32G的虚拟内存,回去继续跑AI了。
过了大概一个月吧,出于种种原因,我安装了英伟达的CUDA框架和Ollama,这两个出生程序不让你改安装路径,默认就必须安到C盘里面,一个CUDA框架是5G吧,Ollama也有5G。然后我本来就不大的C盘就直接红了(我安装软件从不会安装到C盘,除非是这种不让你手动改安装路径的,这个CUDA框架算一个,显卡的驱动也算一个,都是不能手动改安装路径)。
PS:尽管后来我学到这种不能在安装界面更改安装路径的程序,在后端用cmd也能强制更改,但是那时候我的环境都已经配置好了,配置环境的过程也是艰难险阻,我再也不想被后端环境配置折磨了,所以我索性也就没管安装在C盘的那几个程序。
C盘红了,然后就是(并非)喜闻乐见的清理C盘过程,在我电脑刚开始用的时候,软件的安装路径就从不在C盘,User这个文件夹也从C盘改到别的盘里去了(因为这个我遇见了不少bug),文件的默认保存位置也不在C盘,因此我的C盘就没什么好清理的。8G的休眠文件算一个,路边一条,直接关了;Windows更新算一个,用系统工具也能删了;temp缓存文件也就一个多G,删完也腾不了多少空间出来;这是,我注意到了那24G的虚拟内存。于是,这个问题就出现了:
Win11虚拟内存无法设置到除C盘以外的其他盘
一开始,我只是把C盘的虚拟内存设置为“无分页文件”,然后在剩余空间很大的F盘设置了24-32G的虚拟内存然后重启。重启开机后,会弹出来一个窗口(我也忘截图了),表达的大致意思(我理解的)就是:
因为Windows虚拟内存不足,所以系统在C盘创建了一个临时分页文件,分页文件的大小依据系统可以正常运行时所需要的大小而定。
PS:这个临时创建的页面文件(其实就是虚拟内存)是根据电脑开机时所需的运行内存定的,我一开始是10G,然后有一天(是的,这个问题困扰了我两个月)我在任务管理器里面把几个开机启动项关了,它就降到7G了,但是降到7G后,我的壁纸引擎就老是在后台崩溃,我也不知道为什么。
这说明了:系统并没有识别到F盘设置有虚拟内存,而是认为虚拟内存不足,因此强制在C盘放了一个虚拟内存,这个内存我也看了:大小是10G。问题出现,于是上网需求解决方案:先在贴吧找,无果,贴吧大多都是认为虚拟内存是“洪水猛兽”,电脑一回来就立即关虚拟内存(你台式机32G内存条当然够用,那我笔记本16G内存怎么办?)。然后去B站找,也没有结果,B站大多是教怎么改虚拟内存和怎么把虚拟内存改到其他盘的,同时我发现了和我问题一样的寻求帮助者。
没有实际案例,就只好问豆包(不得不说,现在AI真好用,其他的我没用过,但是豆包是真的好用),豆包给出了许多方法,大致分四种
第一种是:用各种方法删掉C盘的页面文件,让Windows重建文件到你指定的盘里面
1.在services.msc服务里面把Windows Management Instrumentation关了,这个好像就是使用虚拟内存pagefile.sys页面文件的服务,然后再C盘里面找到pagefile.sys页面文件就可以直接删掉(这个pagefile.sys页面文件真不好找,它不止隐藏,还受系统保护,我初一就学会了隐藏文件然后让它显示,但是这个系统保护文件我是真的第一次知道),但是豆包还是想的太美了,那个服务根本就无法完全停止,所有那个页面文件也是处于正在运行的状态根本删不掉。该方法宣告失败。
2.在高级启动里面重启电脑,进入安全模式,在安全模式下获取该文件的管理员权限,然后进行强制删除。豆包以为:此时系统核心服务未完全启动,文件占用概率极低。(豆包原话)但是很遗憾:安全模式下分页文件也在运行,删不了。该方法宣告失败。
3.一些软件有强制删除正在运行中文件的功能(360好像就有),但是这个方法我没试过…
第二种是:彻底禁用虚拟内存后,重新启用虚拟内存
这种就简单了,要先把所有盘的虚拟内存调成“无分页文件”的状态,然后重启电脑(第一次),这样禁用虚拟内存的操作就完成了。
PS:说来也奇怪,这样做竟然不会出现那个弹窗,按照原理来说,禁用了虚拟内存,内存不够,系统应该创建临时分页文件的,但是就是没有创建。从这点上看来,是否出现弹窗的两种情况的差别仅在于F盘(其他盘恐怕也一样)上有没有设置虚拟内存。
然后,再在F盘上设置虚拟内存,并重启电脑(第二次),这样虚拟内存就被重新启用了,本次重启后,也是终于出现了我希望的情况:C盘上无分页文件,C盘的内存被腾出来了,C盘终于不红了,24G的虚拟内存被设置到F盘去了。
但是,这就是结局吗?这样就结束了吗?不,还没有结束!
如果你这次用完电脑关机,然后第二天再打开(也就是第三次启动),你会发现:一切又恢复原样了。那这很坏了:难不成你每天用电脑之前都要先重启两次吗?显然,这个问题仍然未被解决。
第三种:终极大杀器:保存数据,重装系统
这个也是豆包的主意,但是呢,我不是那种整天闲的没事就重装系统的人:重装系统是最后才会考虑的事。哪怕不重装系统,现在也凑活能用。而且,我十分怀疑:重装系统恐怕不能解决问题…
最后,源于我今天下午的一次随意的尝试,这个问题也是终于落下了帷幕
今天下午,打开电脑,照常又是那个弹窗,碰巧没事,于是就截了个图,丢给豆包。给出的解决方案是修改注册表,豆包的意思是:由于Windows11更新,导致虚拟内存会锁定在C盘,无法改到其他盘里面,需要打开regedit注册表编辑器,把锁C盘的设置改了,就可以把虚拟内存改到其他盘里面去了。
PS:那这就很前后矛盾了,前面在彻底禁用虚拟内存后,重新启用虚拟内存这个方法中是可以把虚拟内存改到其他盘里的,为什么豆包会说由于注册表的原因无法无法改到其他盘里面呢?我也比较困惑,但是最后问题也是解决了…
解决步骤如下:
1.按 Win + R 输入 regedit 打开注册表编辑器;
2. 在注册表中定位路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
找到PagefileOnOsVolume,将数值中的“1”修改到“0”,然后重启电脑;(这一步是修改注册表将锁C盘的设定更改为任意盘)
3.重启后,再将C盘上的虚拟内存设置为“无分页”,把虚拟内存设置到你喜欢的盘里面,再重启。
————问题解决————