V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WangLiCha
V2EX  ›  Windows

怎么释放 Win11 的虚拟内存?因为虚拟内存满了导致各种 OOM 报错好多次了

  •  
  •   WangLiCha · 2023-12-17 23:31:04 +08:00 · 3567 次点击
    这是一个创建于 371 天前的主题,其中的信息可能已经有所发展或是发生改变。

    电脑频繁 OOM 报错,用 Mem Reduct 定期清理内存发现只能清理物理内存,但是虚拟内存纹丝不动,所以甚至会出现这样的情况,物理内存占用 70%,但是虚拟内存占用 99%,这种时候依旧是几乎所有的软件都崩溃报错。

    就像下面这种情况:

    Imgur

    但是我一直有个不理解的情况,虚拟内存占用会从一个很低的值开始,逐渐增长,这其中即使我重启操作系统,再次启动过后开机虚拟内存的值也会保持在开机前的值,直到他一直跑到 99%,这种时候再重启就有效果了,虚拟内存会回到一个很低的值。

    比如下面这种情况:

    Imgur

    所以有什么办法可以让我随时都可以释放虚拟内存呢?这其中我最多的问题还是虚拟内存占用接近 90%的时候我的使用体验就已经很糟糕了,会频繁出现 OOM 报错崩溃,但是只有到了 99%的时候才能重启释放,否则重启也好 Mem Reduct 清理也好都是没用的。

    21 条回复    2024-01-30 08:34:16 +08:00
    yyzh
        1
    yyzh  
       2023-12-17 23:36:50 +08:00 via Android
    16g 笔记本还用了集成显卡?
    啥程序要用那么恐怖的内存量啊?还是那个程序有内存泄露么?
    aru
        2
    aru  
       2023-12-17 23:43:45 +08:00
    你需要找出占用内存的程序
    打开资源监视器,看是什么程序用了内存
    DOLLOR
        3
    DOLLOR  
       2023-12-18 00:02:19 +08:00
    楼主应该打开任务管理器,看内存一栏里,“已提交”是怎样的数值?(类似 16/32 GB 这样的),这个才是真实的内存占用情况。
    wzcloud
        4
    wzcloud  
       2023-12-18 00:42:38 +08:00 via iPhone
    虚拟内存可以禁用;不过 oom 和虚拟内存关系不大吧
    ysc3839
        5
    ysc3839  
       2023-12-18 01:27:45 +08:00 via Android
    正确解法是增大虚拟内存。这些“清理内存”的程序只是把物理内存移动到虚拟内存里,没有太大意义,当程序需要使用时又要把虚拟内存中的数据移动到物理内存,影响性能以及硬盘寿命,建议不要使用。
    bearqq
        6
    bearqq  
       2023-12-18 08:22:16 +08:00
    正确的解法是增加内存……
    开啥了能这么耗内存?有软件 bug 内存泄露?
    keymao
        7
    keymao  
       2023-12-18 08:47:47 +08:00
    开发机现在还用 16G ,你的内存注定用的是谨小慎微,如果是你的主要开发用设备,内存 32G 起。

    顺带一提,你的虚拟内存是怎么能跑满的?
    xtreme1
        8
    xtreme1  
       2023-12-18 09:25:20 +08:00
    这种"清理内存"程序大概率就是调一下 setProcessWorkingSetSize
    shyangs
        9
    shyangs  
       2023-12-18 09:55:49 +08:00
    Node.js, VSCode, Edge, Firefox 你相當於開了四個瀏覽器.

    這個時候要控制自己不要開超過 3 個瀏覽器分頁. 以及少裝插件/外掛.
    2han9wen71an
        10
    2han9wen71an  
       2023-12-18 10:00:49 +08:00
    我也遇到过,我一般是一周重启一次,重启后自动解决
    xuanbg
        11
    xuanbg  
       2023-12-18 10:10:02 +08:00
    这是自己写的代码有内存泄漏吧?
    sujin190
        12
    sujin190  
       2023-12-18 13:43:08 +08:00
    不会以为这种清理内存的程序不是通过杀进程的话就真的能清理内存吧,内存泄漏还是要程序自己解决的,程序正常改加内存就加内存呗
    JackCh3ng
        13
    JackCh3ng  
       2023-12-18 15:28:00 +08:00
    作为程序员,今天第一次听说 pc 还要自己手动清理内存。电脑卡了,重启就是了。oom 是程序的问题关内存屁事。
    JackCh3ng
        14
    JackCh3ng  
       2023-12-18 15:39:05 +08:00
    这个虚拟内存不懂不要瞎设,直接用系统推荐配置。解决 oom 先增大程序自身的内存参数,这个参数要小于机器本身的内存,加到最大还不行,就要加物理内存,如果内存占用和预期偏离太大,就要看程序是不是内存泄漏了。
    另外,不要把虚拟内存当作内存使用,它本质上是硬盘,速度和内存比不了,是一种讨巧的提高使用体验的技术。“虚拟内存”的翻译有一定的误解,它应该叫内存置换区,只是将物理内存里暂时用不到的数据置换到磁盘上,为正在进行的作业腾出空间,但是你实际工作的内存还是物理内存那么大,如果你的程序要求 16GB 内存,你物理内存只有 14GB ,那么设再多虚拟内存都没用。
    Levox
        15
    Levox  
       2023-12-18 16:16:30 +08:00
    同有个 16G 本子,我直接关了 pagefile 。等到 OOM 甚至干掉显卡驱动了,就重启了,现在的应用内存铺张浪费太严重,特别是浏览器……
    liyafe1997
        16
    liyafe1997  
       2023-12-18 17:32:41 +08:00
    虚拟内存按默认设置理论上不会爆啊,要么你硬盘满了,要么你手动限制了虚拟内存最大值
    Ovrase
        17
    Ovrase  
       2023-12-20 17:57:33 +08:00
    我也是 win11 16G 内存,最近突然出现和你一样的问题,最近也没有新增什么软件,虚拟内存是系统自己管理的,它会一直增大,直到崩溃
    Ovrase
        18
    Ovrase  
       2023-12-20 17:58:18 +08:00
    比较奇怪的是物理内存占用仅 60%作用
    WangLiCha
        19
    WangLiCha  
    OP
       2023-12-22 21:16:21 +08:00
    @Ovrase 这……难道是 Win11 的 bug ?
    Ovrase
        20
    Ovrase  
       2023-12-23 13:05:34 +08:00
    @WangLiCha 我重做了一遍系统,顺便内存增加到 32G 了,继续观察中
    Cambra1n
        21
    Cambra1n  
       327 天前
    同样的问题,物理内存占用不高,提交的虚拟内存会在几天内持续增长到 60g ,造成浏览器等程序 oom 崩溃。

    从事件查看器中看到有虚拟内存信息,“Windows 成功诊断出虚拟内存不足的情况。以下程序使用了大部分虚拟内存: ”
    累计也只有几 G 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:53 · PVG 02:53 · LAX 10:53 · JFK 13:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.