V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Donald5VE
V2EX  ›  问与答

Windows 操作系统的虚拟内存原理和设置问题?

  •  
  •   Donald5VE · 2018-08-05 12:56:06 +08:00 · 3164 次点击
    这是一个创建于 2281 天前的主题,其中的信息可能已经有所发展或是发生改变。
    浏览了好多网页和论坛,对于虚拟内存有各种不同的说法和各种不同方法带来不同的症状。
    有的比较老的帖子,内存还是 MB 为单位的年代,虚拟内存指导方法还是设置到物理内存的 4 倍大小。

    有的相对新的帖子,内存在 4GB 左右的时代,建议就变成了和物理内存一样大。

    现在的帖子在内存为 16GB 的时候就说可以关掉。

    然后不管什么时候都有说法说设置成 windows 默认,然而默认的话,就意味着本来就不大的系统盘被白白占用了物理内存的大小 (物理内存 16GB 的话,就意味着 16GB 的空间就这么放着)。

    那么到底该如何设置,以及相应方法背后的原理呢??
    第 1 条附言  ·  2018-08-05 19:31:38 +08:00
    感谢大家的回答。
    虽然明白虚拟内存的是为了缓解物理内存不够而设置的从硬盘借取空间的解决方案。
    然而微软的自动设置的逻辑却从 win98 时代一直没有过改变,选择默认的话就是虚拟内存大小=物理内存大小
    这样在以前的内存很小的时代的确是相当有用,内存不够了的时候硬盘灯狂闪,系统从硬盘调取内存数据,虽然速度慢,但是至少保证了程序的顺利运行,然而现在大内存的时候,SSD 的空间浪费的就比较厉害了。
    听取的大家的意见和综合了网络的各种所谓的教程,还是设置成了手动设置,最小 4096MB,最大=物理内存大小。

    之所以问这个问题是,是因为这种简单的问题往往没有有根据的确切的回答。。

    so...就酱
    17 条回复    2018-08-06 12:13:33 +08:00
    vibbow
        1
    vibbow  
       2018-08-05 12:59:35 +08:00   ❤️ 1
    Windows 默认虚拟内存大小 != 物理内存大小
    Hsinyao
        2
    Hsinyao  
       2018-08-05 13:34:04 +08:00 via iPhone   ❤️ 1
    这玩意不都是 Windows 自己设置好的吗 虚拟内存的原理本科的操作系统课就有讲啊
    kokutou
        3
    kokutou  
       2018-08-05 13:37:02 +08:00 via Android   ❤️ 1
    保持默认就行。Windows 做那么多测试,一个第三方帖子说关掉,你就关了,傻不傻?

    页面文件有多大,你看看不就知道了,肯定不会是物理内存大小。
    imn1
        4
    imn1  
       2018-08-05 14:00:25 +08:00   ❤️ 1
    首先,虚拟内存不是用尽物理内存后才启用的,所以不会白白地摆着
    然后,看看你有没有大内存软件(主要指图像渲染类别),没有的话,4~8G 差不多了
    sagaxu
        5
    sagaxu  
       2018-08-05 14:23:05 +08:00 via Android   ❤️ 1
    pagefile 要多大,我就加多少内存。服务器上我也也全禁用了,内存够大的时候,这玩意儿有百害无一利。
    msg7086
        6
    msg7086  
       2018-08-05 15:01:14 +08:00   ❤️ 1
    内存超过实际使用需求的时候可以关闭。
    对于普通家庭用户来说,你的物理内存一般都远远小于实际需求的内存量,所以启用分页文件,并且让 物理内存+分页文件 总量大于实际需求就行了。

    比如你开个 Chrome,开点页面,可能就吃掉 10G 内存了,如果你才 16G,那就等着内核随机杀进程吧。
    我这 16G 内存,随便开点页面,开个 QQ,开个播放器,已经 19G 内存没了。大概有 10G 会被分页进硬盘,剩下的 9G 留在物理内存里。

    微软的虚拟内存策略是针对典型负载的。如果你反其道而行,疯狂加内存,比如买 16G 内存扫雷,或者买 128G 内存做开发,这种场景下是不需要打开分页文件的。
    msg7086
        7
    msg7086  
       2018-08-05 15:03:51 +08:00   ❤️ 1
    换个说法。
    如果你平时 Chrome+QQ+开发,大概会吃掉 20G 内存。

    如果你只有 8G,那么系统会给你分配大概 16G 的分页文件,让虚拟内存池达到 24G,足够日常使用。
    如果你有 16G 内存,那么系统会分配大概 8G 分页。
    如果你有 32G 内存,那么不管系统分多少,你都可以把它关掉了,不影响使用。
    regeditms
        8
    regeditms  
       2018-08-05 16:05:27 +08:00   ❤️ 1
    @msg7086 说得有道理, 之前把虚拟内存关了, chrome 会出问题.
    springmarker
        9
    springmarker  
       2018-08-05 16:09:36 +08:00 via Android   ❤️ 1
    @msg7086 老哥开发啥内存要这么多
    msg7086
        10
    msg7086  
       2018-08-05 17:19:01 +08:00   ❤️ 1
    @springmarker Chrome 吃得多。一个 Chrome 吃掉 10G+太正常了。
    pipixia
        11
    pipixia  
       2018-08-05 17:44:10 +08:00 via Android   ❤️ 1
    上次我把这个关掉之后 跑 java 莫名奇妙会系统假死
    vicacheung
        12
    vicacheung  
       2018-08-05 19:03:56 +08:00 via Android   ❤️ 1
    我在微软论坛问过,答复还是设置 1.5 倍…… 256G 的服务器要哭死了😂
    Donald5VE
        13
    Donald5VE  
    OP
       2018-08-05 19:32:24 +08:00
    @vicacheung 这个标准答案从我接触电脑那天就开始是这样了,感觉有点跟不上时代了。。
    huanxianghao
        14
    huanxianghao  
       2018-08-05 20:21:42 +08:00   ❤️ 1
    这个问题。。。有什么纠结,实践出真理!
    你内存大了、足够用了的确可以关掉(一般 8G 就能关了),没有什么影响。
    你内存小了,就设置得多一些。至于设置的大小,看你自己的需要。什么 1 倍、2 倍的设置方式不存在的。只是占用了硬盘的空间而已。
    以上亲测。
    msg7086
        15
    msg7086  
       2018-08-06 02:15:00 +08:00
    @vicacheung 没什么问题啊。人家默认你典型负载是 400-600G 内存占用,所以推荐你开 384G 分页文件。
    vicacheung
        16
    vicacheung  
       2018-08-06 07:53:28 +08:00 via Android
    @msg7086 负载如果是这个水平,应上 512 内存
    msg7086
        17
    msg7086  
       2018-08-06 12:13:33 +08:00
    @vicacheung 那是你认为的应该,不是别人普遍认为的应该。
    256G 服务器 400G 内存占用下很少会产生分页,对性能完全没有影响,钱多得没处花的人才会把钱堆在内存上。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2725 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 08:37 · PVG 16:37 · LAX 01:37 · JFK 04:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.