☰
ComfyUI跑图闪退?手动设置虚拟内存,彻底解决内存不足问题
2026/10/2 5:32:16 网站建设 项目流程

第一次用秋叶的ComfyUI整合包跑图时,我遇到过一件挺让人崩溃的事:工作流在前半段一切正常,模型加载到一半,界面突然消失,Windows弹出“系统内存不足”的提示,控制台连个明确的报错都没留下。当时我第一反应是显卡显存不够,折腾了半天分辨率、换轻量模型,后来才发现问题根本不在显卡——机器虽然只有16GB物理内存,但虚拟内存被系统默认设置在C盘,大小又被Windows的“自动管理”压得很死,ComfyUI闪退完全是被它卡断的。

这篇文章就把这件事彻底讲清楚:为什么跑ComfyUI之前要手动增加虚拟内存,从哪看当前值、设多大合适、设置完还有哪些坑。不挑系统版本,Win10和Win11都适用,主要面向用整合包入门、内存比较少、或者正准备跑大模型工作流的人。

1. ComfyUI为什么对虚拟内存这么敏感:显存、内存和页面文件是怎么分工的

1.1 模型推理时,数据其实是在三级存储里来回搬运

很多人以为跑ComfyUI只看显卡显存,这个理解其实少了一半。拿一次典型的文生图来说,工作流运行时要做的事大致是:加载CLIP文本编码器把提示词转成条件向量,加载UNet或者DiT模型做反向扩散去噪,最后再用VAE解码成像素图像。这些模型的权重、中间特征图、条件数据,全部要放进显存计算。

问题是消费级显卡的显存普遍不大,6GB、8GB、12GB是主流,一个SDXL模型光权重就接近7GB,一张FLUX模型更是十几个GB起步。显存放不下怎么办?ComfyUI有offload机制,会自动把暂时用不到的模型层从显存卸载到物理内存,等用到的时候再传回显存。这就是第一层搬运。

物理内存被占满之后,Windows才会启动第二层兜底:把物理内存里暂时不用的数据写入硬盘上的pagefile.sys文件,也就是虚拟内存。换句话说,虚拟内存的本质是硬盘空间临时客串内存。ComfyUI跑大工作流时,物理内存一旦不够,程序并不会立刻停止,而是继续往页面文件里写。可如果页面文件上限不够高、所在磁盘空间不足,系统就没有兜底可用了,进程要么被杀掉,要么就是卡死甚至闪退。

1.2 默认的“自动管理”为什么总是掉链子

Windows默认开启“自动管理所有驱动器的分页文件大小”,系统会按照物理内存的某个比例在C盘分配一个动态区间。听起来很智能,实际在ComfyUI场景下有两个硬伤。

第一,区间上限通常不够。系统默认策略下,页面文件的大小往往只比物理内存多出有限的一部分,而ComfyUI跑批量队列、高分辨率重绘、视频生成工作流时,内存提交峰值经常是物理内存的几倍。峰值一旦顶到上限,下一个内存分配请求就会失败。第二,C盘会自动缩水。如果C盘剩余空间紧张,Windows会悄悄调小页面文件,用户不主动查看根本发现不了。很多人跑图崩溃后去任务管理器一看,C盘可用空间只剩几个GB,系统托管的页面文件被压缩到1GB以下,这种状态下大模型连加载都撑不过去。

整合包的绘世启动器里有显存优化选项,但那个调整的是显存和内存之间的分配策略,替代不了系统级页面文件。你选择低显存模式,模型会更积极地往内存里搬运,核心逻辑是把显存压力转移到物理内存,再做不了主时就要页面文件兜底,所以启动器选项和虚拟内存是叠加关系,不是二选一的关系。

2. 先别急着改,教你两分钟看清当前虚拟内存的真实状态

2.1 三种常见的“内存不足”报错要分清

在动设置之前,最重要的是先判断你的ComfyUI到底属于哪种“内存不足”。因为很多人折腾半天,其实是在处理一个压根不相干的问题。

报错类型典型表现真正原因
CUDA out of memory控制台直接红字提示显存不足显存扛不住,优先考虑低显存参数或精简模型
Windows弹窗“虚拟内存不足”系统级提示某个程序内存不足页面文件确实偏小,需要手动扩容
ComfyUI闪退、进程被杀窗口凭空消失,无明确报错物理内存加页面文件全部吃满,进程被系统终止

如果是第一种情况,你改再多的虚拟内存也没用,那是显存问题。但如果是第二种和第三种,虚拟内存的设置就是最直接的解法。尤其是那种控制台打印到一半就突然退出、连错误栈都没留下的情况,十有八九是系统底层把进程OOM掉了,这时候去翻Windows事件查看器,会在“应用程序-错误”里看到事件ID 1000或1023一类的记录。

2.2 查看页面文件大小,用这几招最快

我推荐一个三秒打开系统属性的方式:按Win+R,输入sysdm.cpl,回车,直接进“系统属性”。比一层层点“此电脑-属性-高级系统设置”快得多。切到“高级”选项卡,性能区域点“设置”,再切到“高级”,底部就有“虚拟内存”区域,点“更改”能看到当前的配置。

要看实时使用情况,用PowerShell执行这条命令:

Get-CimInstance Win32_PageFileUsage

执行之后能看到当前所有页面文件所在的盘符、已分配大小和当前使用量。如果显示C盘“系统托管”,或者初始值最大值都很小,基本可以认定默认配置不够用。

还有个更直观的入口:任务管理器-性能-内存。重点看右下角的“已提交”和“峰值提交”。已提交代表当前所有进程加起来向系统申请的内存配额,峰值提交则是开机以来到过的最高值。如果峰值提交已经超过物理内存很多,说明Windows一直在依赖页面文件运转,这种情况下一旦页面文件上限不够,离崩溃就不远了。

2.3 判断标准很简单:会不会在跑图中途触顶

我自己判断要不要动虚拟内存,就看一个标准:物理内存占用过半以后,任务管理器里“已提交”的数字还在持续上升,同时硬盘占用率飙升到100%,软件界面开始明显卡顿。出现这种迹象,说明系统正在高频换页,页面文件空间又快见底,基本可以确诊为虚拟内存“家底太薄”。这时候再跑ComfyUI,闪退只是时间问题。

3. 手动增加虚拟内存的完整操作:每一步都说明理由

3.1 安全、可逆的设置路径

再次强调,这一步并不复杂,但每一步都有讲究。完整路径如下:

  1. Win+R打开运行,输入sysdm.cpl回车,进入系统属性。
  2. “高级”选项卡下,性能区域点“设置”,再切到“高级”,点虚拟内存区域的“更改”。
  3. 取消勾选“自动管理所有驱动器的分页文件大小”。
  4. 先不要急着删原有配置。选中当前页面文件所在的盘(一般是C盘),选择“无分页文件”,但先别点确定。
  5. 选中你打算放置页面文件的目标盘,比如D盘或E盘,选择“自定义大小”。
  6. 初始大小和最大值填入同一个数值,比如32768,然后点右侧“设置”。
  7. 依次点确定,系统会提示重启,重启后生效。

我特别建议按这个顺序操作,而不是一上来就把C盘的分页文件关掉。先在新盘把页面文件立起来,再顺手清理系统盘那份,能避免中途系统处于无页面文件状态。虽然Windows没有页面文件也能启动,但不少系统组件会对分页文件的缺失做出异常反应,没必要给自己制造这种风险。

3.2 为什么初始大小和最大值建议写成一样

很多人会纠结初始值和最大值该怎么填。我的经验是:给ComfyUI用的机器,直接填同一个数字。这样做的本质是固定页面文件大小,防止它频繁伸缩。如果初始和最大值不一样,系统在高负载时会反复扩展文件再收缩,磁盘碎片增加、瞬时卡顿变多,ComfyUI本来内存波动就大,这种抖动会放大崩溃概率。

固定大小也有个代价,磁盘空间被占据后不会自动释放。比如设了64GB固定值,即便实际只用了10GB,文件也占据着64GB空间。但在磁盘够大的前提下,这个代价换来的稳定性是值得的。如果空间确实紧张,也有折中方案:初始值给32GB,最大值给64GB,让系统在峰值时自动扩展。只是要接受这种模式在自动扩容瞬间可能卡一下。

3.3 页面文件放哪个盘:首选独立SSD,别放机械盘

页面文件的位置对ComfyUI体验的影响非常大。机械硬盘的随机读写速度通常只有几十MB/s,而页面文件访问是典型的随机小文件读取,机械盘在这种场景下会变成整个系统的木桶短板。如果你只有一块机械盘,页面文件放在上面反而会比没有更慢,这种情况优先加物理内存比加虚拟内存实在。

如果电脑有多个SSD,除了系统盘之外,选一块剩余空间大、长期不需要存放重要资料的硬盘来做页面文件最合适。原因是页面文件和系统盘的分区读写会互相争抢IO,ComfyUI加载模型本来就有高IO需求,把页面文件丢到能和系统盘错开的SSD上,可以缓解不少。

很多人在意“SSD写多了会坏”,尤其是网上流传的“虚拟内存伤硬盘”说法。实际上页面文件的写入量在正常使用中远小于日常下载、游戏安装这类重IO操作。真正要关心的是SSD剩余空间,别把盘塞到95%以上再放页面文件,保留足够空白空间对主控垃圾回收更友好。

4. ComfyUI场景下虚拟内存到底设多大:直接给配置参考

4.1 不同配置下的参考表格

虚拟内存不是越大越好,也不是简单的“物理内存乘以2”。ComfyUI和普通办公软件不同,它是典型的高峰值内存应用,批量生图、高分辨率放大、多模型叠加时,内存申请会瞬间冲破常态水位。我这里给一份按常见配置整理的参考值,可以直接抄作业。

物理内存常见ComfyUI用法建议页面文件
8GB只跑SD1.5轻量模型、低分辨率32GB起步,但不建议长期依赖,优先加内存
16GBSDXL、FLUX小显存工作流32-64GB
32GBSDXL/FLUX、批量队列、视频生成32-64GB
64GB以上常规工作流、多工作流同时开32GB兜底即可

核心参照不是物理内存倍数,而是你跑的那个工作流的内存峰值提交量。怎么估?先按16GB内存跑SDXL的场景来算,模型权重、VAE、CLIP、中间特征图加在一起,峰值提交很容易超过40GB,把页面文件设到64GB才有比较充裕的缓冲。如果工作流里还挂了ControlNet、多个LoRA、图像放大节点,峰值会更高。

4.2 显存大小和虚拟内存是联动的

虚拟内存不能只看内存条,显存大小也得一起算。显存只有6-8GB时,大模型几乎全程都在做显存和内存之间的offload,物理内存会更早吃满,然后疯狂往页面文件写。这种场景下页面文件建议直接给到64GB。显存12GB以上时,offload频率明显降低,页面文件主要起到兜底作用,32GB通常已经够用。

如果你的目标是跑视频生成工作流,比如热词里常提到的“ComfyUI本地生成视频工作流”,那情况又不一样。视频生成往往同时加载文本编码器、图像编码器、DiT主干、VAE等好几个大模型,内存占用比静态图像翻倍。我第一次跑视频工作流时,16GB物理内存直接爆,页面文件从32GB加到64GB才稳定。准备做视频方向的,建议别犹豫,直接64GB起步。

还要提醒一句:整合包启动器里那些低显存优化参数不要乱开。开启之后模型会更多地在内存和显存之间反复搬运,对页面文件的依赖反而更大。如果你没有足够的虚拟内存兜底,这类参数只会让程序更早崩溃。

4.3 笔记本用户要额外注意

笔记本用户看到这里多半会嘀咕:我的C盘就剩30GB,设64GB页面文件不现实。这种情况不用硬刚,页面文件可以放到D盘或者其他空间富余的SSD分区。大多数笔记本出厂只有一个分区,但可以通过磁盘管理压缩卷搞出D盘,再把页面文件转移过去,这一步就是热搜词里“转移虚拟内存”的常见用途。

另外一个经常被忽略的问题是,笔记本的核显会从物理内存里划走一部分作为共享显存。8GB内存的机器,实际可用可能只剩6GB左右,跑轻量模型都很勉强。所以笔记本跑ComfyUI,我建议物理内存16GB起步,同时页面文件至少32GB,而且尽量在插电源状态下运行。省电模式会限制CPU和显卡性能,内存换页速度也会受影响,跑图更容易出问题。

5. 设完之后别急着开跑,这几个坑建议先排掉

5.1 设置没生效的常见原因,头号坑不是路径问题

很多人设置完虚拟内存后,明明填了数值,重启之后进系统属性一看还是原来的数值。这种情况八成是设置对话框里没点“设置”按钮,只点了“确定”。这两个按钮在界面上挨着,很容易漏掉。在窗口右侧选中自定义大小、填好数值之后,必须先点一下“设置”按钮,让新配置进入下面的列表区域,再点“确定”,才真正生效。

还有一个坑:你在C盘选了“无分页文件”、在D盘设了固定值,但重启后系统弹蓝色报错或者启动特别慢。这不是设置错了,而是Windows在关机阶段清理旧页面文件、开机阶段创建新页面文件,一次重启完成迁移,速度慢一点是正常的,第二次重启就正常了。

5.2 页面文件被吃满的表现与应对思路

设完虚拟内存不等于一劳永逸,页面文件还是会吃满。常见场景是:跑高分辨率重绘时,先有VAE解码大图,再做图像放大,内存需求噌噌往上涨;或者是队列里排了十张图,前面几张的中间结果还没释放,后面几张又开跑,峰值叠加。出现这种情况时,任务管理器里“已提交”会顶到上限,然后Windows弹“系统的页面文件太小”提示。

我的应对思路是分两步。短期,先看是工作流里哪个节点的内存飙升最快,如果是高分辨率放大这类后处理节点,可以临时降低放大倍率或者分批跑;长期,直接把页面文件再加一档,同时关掉浏览器、聊天工具这些吃内存的常驻程序。记住虚拟内存只是缓冲池,不是无底洞,程序本身的内存占用逻辑不合理,再大的页面文件也只能延迟崩溃。

5.3 内存压缩和虚拟内存不是一回事,别搞混

还有一个容易混淆的概念:Win10和Win11自带的内存压缩功能。它在任务管理器里会显示为“已压缩”多少MB,本质是把物理内存中不常访问的页面压缩后继续放在内存里,减少对硬盘页面文件的调用。很多人以为开了内存压缩就不用设虚拟内存了,这个理解是错的。内存压缩处理的是“没在用的数据怎么临时放着”,虚拟内存处理的是“物理内存满了往哪倒”,两者是前后端的关系。

用PowerShell执行Get-MMAgent可以看到当前MemoryCompression是否启用。普通用户保持系统默认就好,不建议为了省内存手动去开关它。内存压缩让内存的“虚胖”占用看起来很高,但系统并没有因此崩溃,这是它在兜底的体现。如果你看到内存占用85%还跑得很顺畅,不用慌,一部分功劳就是内存压缩的。

5.4 页面文件别放这个位置,容易出诡异毛病

最后说一个不太常见但踩过的问题:页面文件不要放在U盘、移动硬盘或者被BitLocker加密的可移动设备上。Windows虽然允许在部分外部存储上设置页面文件,但设备一拔出,系统就会找不到分页文件,轻则报错,重则无法进入桌面。这种配置没有任何性能优势,纯粹是给自己找麻烦。

页面文件属于操作系统底层文件,也需要避开被第三方优化工具“清理”的路径。有些清理软件会去清理C盘pagefile.sys,如果重启前被清理,系统可能无法正常生成分页文件。如果你装了这类工具,建议在排除列表里把这个文件加进去。

6. 跑过一阵子之后,我自己的最终配置是什么样的

说回我自己的环境,一台16GB内存、8GB显存的笔记本,页面文件固定在D盘,初始和最大值都填的是64GB,C盘保持无分页文件状态。这个配置已经稳定跑了半年多SDXL、FLUX和几个视频生成工作流,中间没有再出现过“加载到一半闪退”的情况。只有一次跑特别复杂的视频生成工作流时感觉到明显卡顿,原因是D盘剩余空间掉到10GB以下,页面文件扩展空间不足,清理了之后恢复如常。

给还没动手的读者一个直接结论:如果你刚装好ComfyUI整合包,第一次启动前别急着跑工作流,先花五分钟看看虚拟内存设置。物理内存16GB的用户直接设到32到64GB,跑视频生成就取上限;32GB内存的用户设32GB保底即可;8GB内存的话,优先考虑物理内存升级,虚拟内存最多是缓解,替代不了物理内存的容量瓶颈。页面文件安置在空间富余的非系统SSD上,比任何花哨的优化参数都管用。

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

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

立即咨询