服务器虚拟内存C盘满了的根本解法是:把虚拟内存(页面文件)迁移到非系统盘,同时清理临时文件、Windows更新缓存和休眠文件等占用大户,最后设置合理的虚拟内存大小,根治C盘爆满问题。
很多运维朋友遇到过这种场景:服务器跑着跑着,C盘突然飘红,远程登录卡到怀疑人生,打开任务管理器一看,虚拟内存占了几个GB甚至十几个GB,这时候别急着删东西,先搞清楚是什么占满了C盘,再动手解决。
先把虚拟内存的“锅”搞清楚:是不是页面文件撑爆了C盘
服务器虚拟内存C盘满了怎么办,第一步永远是定位根因,Windows系统的虚拟内存本质上是磁盘上的一个文件,叫pagefile.sys,默认放在系统盘根目录,如果物理内存不够用,或者系统配置了较大的虚拟内存范围,这个文件会持续膨胀,把C盘空间蚕食干净。
怎么判断C盘满是不是虚拟内存的锅
打开C盘根目录,把文件夹选项改成“显示隐藏文件”和“取消隐藏受保护的操作系统文件”,如果看到pagefile.sys体积很大,比如超过了4GB甚至达到十几GB,那基本可以确定虚拟内存是主要的占用源。
也可以右键“此电脑”选“属性”,进入“高级系统设置”,在“性能”区域点“设置”,切到“高级”选项卡,底部能看到“虚拟内存”的当前分配情况,这里显示的数字就是页面文件的实际占用。
虚拟内存明明有默认设置在C盘,为什么偏偏会满
- 服务器物理内存较小,比如只有8GB,却运行了数据库、Web服务等多个应用,内存压力大,Windows会疯狂往页面文件里写数据。
- 系统托管的默认配置会让页面文件自动增长,最小值和最大值差距过大,导致文件持续扩展。
- 多个应用程序存在内存泄漏,长时间运行后占用量飙升,虚拟内存被撑满。
- C盘本身分区较小,比如只有40GB或60GB,系统文件加上虚拟内存很容易触及上限。
搞清楚原因之后,解决方案就清晰了:把虚拟内存挪出去。
虚拟内存设置多少合适?把页面文件迁到D盘才是根治办法
行业共识认为,虚拟内存的合理大小一般建议设为物理内存的1到1.5倍,但这只是参考值,还得结合服务器实际负载来定,不过比大小更关键的是位置,把虚拟内存放在C盘以外的磁盘上,既释放了系统盘压力,还能减少C盘的碎片化写入。
具体操作步骤:把虚拟内存从C盘迁移到D盘
- 右键“此电脑”选“属性”,点左侧“高级系统设置”。
- 在“高级”选项卡的“性能”区域,点“设置”。
- 切到“高级”选项卡,点击底部“虚拟内存”区域的“更改”。
- 取消勾选“自动管理所有驱动器的分页文件大小”。
- 选中C盘,选择“无分页文件”,点“设置”。
- 选中D盘(或其他空间充足的分区),选择“自定义大小”。
- 初始大小设置为物理内存的1倍,最大值设置为物理内存的1.5倍(例如物理内存16GB,初始值16384MB,最大值24576MB)。
- 点“设置”确认路径生效,一路点“确定”,然后重启服务器。

重启后,C盘根目录下的pagefile.sys会消失,D盘会出现新的页面文件,这一步做完,C盘空间基本能释放一大块出来。
没有D盘怎么办:压缩系统盘或加数据盘
如果服务器只有一个C盘分区,建议用磁盘管理工具把现有空间分出一个小分区,比如从C盘压缩出20GB到50GB,新建为D盘,专门放虚拟内存和临时文件,分盘操作需要在系统运行时执行,右键“此电脑”选“管理”,进入“磁盘管理”,右键C盘选“压缩卷”,按提示分配空间即可。
如果服务器是云主机,也可以直接在云控制台购买一块数据盘,挂载后初始化、格式化,再按上述步骤把虚拟内存指过去。
服务器C盘空间不足清理:动手删掉这几类安全文件
迁移虚拟内存之后,C盘可能还是不够清爽,系统运行久了,临时文件、更新缓存、日志文件都会堆积起来,下面这些内容可以放心清理,不需要额外工具,Windows自带能力就能完成。
临时文件和系统缓存
打开“运行”窗口输入%temp%,进入当前用户临时文件夹,全选删除,再输入C:WindowsTemp,同样删掉里面的内容,遇到提示文件被占用就跳过,不影响整体清理效果。
Windows更新留下的缓存文件在C:WindowsSoftwareDistributionDownload目录下,这些是下载好的更新补丁包,安装完成后没有自动清除,删掉能腾出不少空间,停止Windows Update服务后删除更彻底:管理员身份打开命令提示符,输入net stop wuauserv,删除Download目录内容,再输入net start wuauserv重启服务。
休眠文件和系统还原点
休眠文件hiberfil.sys占据空间巨大,很多服务器根本不需要休眠功能,管理员身份打开命令提示符,输入powercfg /h off,休眠文件会直接被删除,立即释放出与物理内存等大的空间。
系统还原点也吃空间,右键“此电脑”选“属性”,进入“系统保护”,选中C盘点“配置”,把还原空间占用调低,或者直接点“删除”清除现有还原点。

Windows.old和崩溃转储文件
如果服务器做过大版本系统更新,C盘可能出现Windows.old文件夹,这是旧系统的备份,确认系统稳定运行后可以直接删除,用“磁盘清理”工具选择“清理系统文件”,勾选“以前的Windows安装”,系统会自动清掉该目录。
崩溃转储文件(MEMORY.DMP)在蓝屏或异常重启后生成,体积可能达到几个GB,位于C:Windows目录下,如果服务器已经稳定运行,删除这些转储文件没有风险。“此电脑”右键属性,进入“高级系统设置”的“启动和故障恢复”,把“写入调试信息”改为“无”,以后不会再生成新转储文件。
用磁盘清理和存储感知做最后一轮打扫
- 打开“此电脑”,右键C盘选“属性”,点“磁盘清理”,再点“清理系统文件”,勾选“临时文件”“回收站”等选项,执行清理。
- Windows Server 2019及以上版本可以开启“存储感知”,在“设置”>“系统”>“存储”里打开自动清理开关,系统会定期删除无用的临时文件和旧版本更新。
日常怎么让C盘保持健康,避免再次爆满
清理完只是治标,想让服务器虚拟内存C盘满了这个问题不再复发,得从日常操作习惯入手。
调整虚拟内存策略为“系统管理”或固定大小
迁移到D盘后,可以把虚拟内存设置为“系统管理的大小”,让Windows自行调整,也可以保持自定义固定值,固定值的优势是页面文件不会忽大忽小,减少碎片化,但前提是预留空间足够,如果D盘空间紧张,用系统托管更省心。
定期巡检磁盘空间
设置一个计划任务,每周跑一次磁盘空间检查脚本,或者用自带的“存储分析”工具统计各目录占用情况,发现C盘使用率超过80%就及时介入,别等到剩几个GB才处理。
应用日志和数据库文件不要放C盘
互联网信息服务(IIS)日志、SQL Server数据库文件、第三方应用的数据目录,安装时默认可能指向C盘,安装前刻意改到数据盘,能避免日志无限增长把C盘塞满,已经装在C盘的,手动迁移数据目录后再调整应用配置。
关注云服务器快照和镜像的存储占用
云平台上的快照和自定义镜像同样会占用存储配额,虽然不直接显示在系统盘里,但会挤占整体磁盘空间,定期去云控制台清理过期快照,保留最新的一两个即可。
为什么虚拟内存设置在C盘会导致系统卡顿,以及如何优化
虚拟内存C盘满了不只是空间问题,还直接影响性能,C盘承担着系统核心文件的读写任务,页面文件的随机读写会加剧同一块磁盘的I/O压力,尤其在机械硬盘的服务器上,卡顿感非常明显,即使C盘没满,把虚拟内存放在系统盘也是不推荐的做法。

多块硬盘的情况下,虚拟内存放哪块盘最合适
- 优先选择独立的非系统盘,最好是SSD或云盘的云硬盘类型,读写性能优于机械盘。
- 不要把虚拟内存放在存放数据库文件的同一块盘上,避免I/O争抢。
- 有条件的话,给虚拟内存单独划分一个分区,避免和其他业务数据混在一起。
服务器物理内存足够大时,可以直接关闭虚拟内存吗
某些场景下可以,但不建议完全关闭,Windows内核的部分功能模块依赖页面文件的存在,即使物理内存充足,禁用虚拟内存可能触发个别软件的兼容性问题,更稳妥的做法是把页面文件设置为固定大小,比如物理内存的0.5倍,放在D盘,保持系统稳定又腾出C盘空间。
清理完C盘后性能反而变慢怎么办
清理C盘后,Windows会重建临时索引、重写部分缓存,短期内磁盘占用和响应速度可能略有波动,重启一次服务器,让系统重新初始化所有服务,性能会恢复正常,如果重启后依然卡顿,检查D盘的可用空间是否充足,虚拟内存页面文件是否正常工作。
页面文件碎片化也可能导致性能下降,用Windows自带的碎片整理工具,对D盘执行“优化”操作,或者用命令defrag d:去掉碎片,注意固态硬盘不要做传统碎片整理,只需执行TRIM优化。
关于服务器虚拟内存C盘满了的常见疑问
虚拟内存文件可以直接删除来释放空间吗
不建议直接删除pagefile.sys,因为系统正在使用它,直接删除会报错或在重启后重新生成,无法真正解决问题,正确做法是通过虚拟内存设置界面,改为“无分页文件”并重启,系统会自动移除该文件,然后重新指定到其他盘符。
C盘满了能不能只清理不迁移虚拟内存
短时间可以,但后续还会涨回来,虚拟内存的文件大小取决于内存压力,只要运行的程序没有变化,页面文件迟早会重新占用空间,一边清理配置垃圾文件,一边把虚拟内存迁移到其他盘,才是一劳永逸的做法。
云服务器C盘只有40GB,调整虚拟内存后还是不够用怎么办
40GB的系统盘在现代Windows Server环境下确实偏小,系统本体加上补丁和软件容易吃紧,可以考虑在云控制台升级系统盘容量,或者把不常用的大文件、软件安装路径迁移到数据盘,升级系统盘在云平台上通常不需要重装系统,按提示操作即可扩充容量。