找回密码
 加入我们
搜索
      
查看: 31249|回复: 89

[内存] 16g日常够用?你可能被win10以来的任务管理器误导了。

[复制链接]
发表于 2022-10-30 18:44 | 显示全部楼层 |阅读模式
本帖最后由 ztwindwalker 于 2022-10-31 02:52 编辑

编辑:基本讨论清楚了有效查看内存需求的工具、软件和方法,以及内存管理相关的知识框架,有需要的可以查阅置顶贴并自行搜索相关关键词学习。

编辑:基本结论是——感觉游戏/软件有点小卡顿、怀疑内存不足,然后就在使用中的某一时刻,随手打开任务管理器/资源监视器窗口,接着发现物理内存占用率远远没有接近100%,既不能直接断定“内存够用”,也不能把所有“备用/已缓存”干脆都直接认为是“潜在内存占用需求”这类概念、从而错误地认为明显内存不够用。

如题,相比于上古时期,任务管理器现在会把一部分占用的内存显示为“备用”,并且最具有迷惑性的是,颜色也显示为白色,且不计算进占用率百分比数字和容量数字。名义上说是可以随时腾出来的内存,实际基本上没有压榨空间(编辑:参看基本结论。多废话几句就是——如果打开监视窗口的时候,内存除了已占用就全部是“备用”,只看资源监视器的当前状况,则不能轻易判断内存容量对于应用场景是否充足——既有可能是当前程序确实用不着那么多内存,“备用”项是可以随时腾出来的其它程序占用的物理内存,也可能是它目前不处于活跃内存用量的峰值阶段,最极端情况下,那些剩余的“备用”项全都是它在内存占用高峰时期留下的数据。看我下面的置顶贴的试验即可)

我玩游戏的时候,不管怎样一直显示70%多占用,当时还是16g内存,就因此长期没真正注意内存容量问题,以为还是16g够用。后来留意了一下这个备用,然后发现加上备用,其实总是十分接近100%了。最后明白了一点,就是现在的任务管理器,如果要估计实际内存需求,要看“已提交”里面的数字。这个数值如果大于物理内存,那就是需要加容量了编辑:不一定,已提交的分子项数字有参考价值,并非没有意义;但是根据软件作者的编程意图和软件特点,都是有一定比例超额水分的。如果一定要买大于自己应用场景下“已提交”数值的物理内存,那可能会造成浪费。


感谢提供技术概念/工具名称和知识背景的各位回复者!

半路编辑,纯经验和个人观点只谈:
1,鉴于中间有人特别关注“已提交”这一项,以及很多内存较大的用户贴自己截图表明“备用”一项数值很大也没问题,我加入段文字,解释一下重点:
如果你只有16g,但是却运行高内存需求的应用(此游戏,升级内存容量后,在完全相同的场景下,加到64g内存时,运行时任务管理器显示“已占用”共计20g,且间歇性卡顿感消失),而在16g内存中运行时,查看任务管理器,显示的是13g已占用+3g的备用。也就是说,内存充裕的情况下,明明需求20g物理内存的应用场景,在只有16g物理内存的情况下,只能有效使用13g,有3g的“备用”内存项永远拒绝让出空间,虽然任务管理器的鼠标悬停字面描述声称可以释放这部分内存。

2,我说的是一种 因为任务管理的显示机制(图示、文字)而引起误解误判问题。比如你感觉游戏有点不规律的卡顿(疑似内存或者显存不足)、软件特定操作的时候有时候要卡一下但并不是每次都必然卡这样的情况的时候,一般操作不就是打开任务管理器,看看瓶颈在哪么?是cpu占用率高了、还是内存显存不足了?在上面我自己的这个例子中,任务管理器的 显示机制 会显示只占用了13g内存,还有3g空余。这个时候,如果不去深究,不就会想当然地觉得“16g够用,任务管理器显示甚至还有3g空间富余呢。卡顿是别的原因或者不可避免的“,回帖的一些人也提到,现在ssd相对于内存,在连读大文件读写时候的速度差距,相比机械硬盘已经大大缩小了,因此内存不足时候的卡顿感已经不那么令人厌恶了,再结合任务管理器这种显示机制可能造成误导,你不就会觉得内容容量足够么?

3,内存要多大才够用,取决于个人实际使用场景。我之前的经验,就是知道16g其实不太够以后,玩游戏,根本不敢留着edge、chrome这样高性能但是高内存占用率的浏览器。挂着steam客户端,切出来看个攻略视频什么的,看完了都要随手关浏览器,否则本来内存够用的游戏,去掉浏览器的几个g,也会捉襟见肘。当然了,搞笑之处就是,之前因为不知道任务管理器显示的占用量有误导性,而总是觉得偶尔卡顿什么的就是整机性能不济或者游戏优化差劲,只能忍了,从而玩游戏的时候也不会随手关浏览器等等,导致又多忍了很多可以避免的卡顿。

4,与其靠人的习惯去客服内存偏紧乃至忍受就是不足的偶发性卡顿,我干脆趁着现在ddr4价格低,升级了内存,顺便也就是实测一下,之前的偶发性卡顿会不会因为内存过剩就消失了。结论是,现在可以随便留着浏览器和其它应用不关,游戏完全不会产生偶发性卡顿。评测跑分的时候,测试人员肯定不会让电脑挂着各种占用内存的后台,一个干净无后台的评测平台,是硬件跑分测试的基本要求啊。但是实际使用场景,哪个用户会这么教条呢?正如3所述,我真正非加内存不可的其实就几个游戏,大多数游戏,退光除了steam以外的后台就ok,但是最终我教条不下去,还是怒买内存了。一般用户,确实是”16g不足、32g刚好,64g过剩“。


我下面贴的这个图的情况,是edge浏览器上论坛+挂一个steam的占用量,还没挂微信和QQ或者语音软件。今天还遇上一个情况,就是算上备用,在桌面居然就占用了14g多。常态的情况是,开个浏览器和steam,算上备用会超9.5g。

所以16g内存肯定是不够用了,除非是酷爱极限内存超频、跑分,而不会实际上用主力机玩游戏,否则再追求内存性能也该32g起步,要不然就本末倒置了。

PS:曾经有一个经验,叫32g无用论,意思是如果16g不够用,那32g也是不够的,就要一步到位上64g。这个经验的意思是,如果只用一般软件或者玩大多数游戏,耗的都是显卡和cpu,不需要内存容量超过16g;如果真需要大内存的应用,比如建模或者视频编辑、批量处理高像素图片,那64g也就是温饱水平。现在看来,这个经验也该过时了。32g应该是标配了,至于更大,那自己酌情考虑了。

一小段白框就是备用

一小段白框就是备用
发表于 2022-10-30 20:18 | 显示全部楼层
ztwindwalker 发表于 2022-10-30 20:08
“已提交的分子”,怪我没一次性说清楚。上限是包含虚拟内存的。
如果分子部分就大于物理内存,说明一些 ...

其实吧... 不一定
向 Windows 请求内存是调用 VirtualAlloc API,
根据参数有两种处理方式:
MEM_RESERVE 就是让 Windows 分配虚拟内存, 并且保证分配的这部分将来是可用的, 其它程序无法占用. 但是对物理内存/swap 都不产生任何影响;
MEM_COMMIT 就是让 Windows 增加"已提交"的内存数量, 并且保证将来使用这些数量内存的时候有足够的内存资源来分配. 但是直到进程真正访问对应的内存时, Windows 才会在物理内存中给进程分配内存.
当然也可以一起保留并提交.

"已提交"的分母没错是(物理内存 + swap - 内核保留), 但分子其实是所有进程 MEM_COMMIT 的内存数量之和.
发表于 2022-10-30 20:37 | 显示全部楼层
ztwindwalker 发表于 2022-10-30 20:25
哈哈懂技术的来了~
那就干脆请教本贴主题:现在的所谓“保留”,又是什么意思呢?就是把这个显示成白色且 ...


之前和现在的区别就是
从 Win7 (不一定准, 印象里是)开始, 任务管理器里显示的变成物理内存的实际用量,
Win 7 以前显示的是现在的"已提交".
通过"已提交"来判断现在安装的物理内存够不够用其实问题不大, 我只是纠正一下, "已提交"的数量大于物理内存, 并不一定能说明物理内存已经爆了.
发表于 2022-10-30 21:24 | 显示全部楼层
本帖最后由 OstCollector 于 2022-10-30 21:37 编辑

内存大小是否够用的金标准应该是
perfmon.msc/perfmon.exe 里面,counter: Memory->Pages/sec 吧,不过感觉这个也会被一些东西干扰,比如mmap啥的

我随手malloc 1G的内存然后不去touch,也会贡献commit吧
(望向2G 内存虚拟机里面vscode的几个30G+ process)
发表于 2022-10-31 00:52 | 显示全部楼层
ztwindwalker 发表于 2022-10-30 20:38
很简单:红框1(已提交的分子项)如果明显大于物理内存,比如是20g,但是物理内存只有16g,那么是不是总 ...

你有没有想过一种可能性...软件申请内存之后是不一定会真的使用的, 现代操作系统通常会等软件真正写入已申请的内存区域的时候才真的分配空间, 而不管有没有真的分配空间, 分配器都会记录为已提交, 并且会预分配相应的页面文件, 而这取决于使用场景可以占到相当大的比例
 楼主| 发表于 2022-10-31 01:22 | 显示全部楼层
zhgbbs 发表于 2022-10-31 01:06
操作系统的内存模型都没搞明白,还长篇大论
我也可以发个内存容量焦虑贴,128G太少,256G勉强,512G ...

所以从基本原理出发,有何可靠的第三方软件/命令行可以一锤定音地显示“当前正在运行的应用要多少物理内存才完全足够?”如何看到一个可以解决问题的数字?
或者windows任务管理器的显示机制非常科学、根本不需要别的工具,只是我自己看不懂,所以菜鸡?
不要内存焦虑的最好办法,就是让任何没有基础的人,看一下某个显示出来的数字,然后就可以判断,在自己实际使用场景下,内存容量是否足够。

我倒是知道一个土办法,就是完全禁用虚拟内存,然后看看运行软件,看看是不是报错,报错就证明“不够”,但是并不解决“到底要加到多少”。
有人说xp时代的任务管理器显示的内存占用率机制确实跟现在的不一样。那个时代就是,任务管理器显示内存没超过95%,放心用,别想升级内存容量的事情;超了,老老实实加容量。
发表于 2022-10-31 01:34 | 显示全部楼层
本帖最后由 zhgbbs 于 2022-10-31 01:37 编辑
ztwindwalker 发表于 2022-10-31 01:25
主要是,有数个gb的容量,即使前台程序需要,也不会释放出来,而且还被显示为可用空间(让人误以为内存够 ...

你把下图的这些东西都搞明白,就不会有这么多问题了
顺便说下,“备用空间”(或者叫 已缓存)是可以一键清空的,就在我发的这个截图的软件里,你自己找找

Snipaste_2022-10-31_01-35-36.png
发表于 2022-10-31 01:35 | 显示全部楼层
ztwindwalker 发表于 2022-10-31 01:07
是的,前几楼也有人指出,我用已提交这个数值来判断内存需求量,没什么大问题但是不能说完全严谨。
如果 ...

取决于具体用途, 常见的比如稀疏性很高, 但又没"那么高"的情况下, 更大比例的浪费可能会在开发中就难以接受, 但大致上50-90%的浪费是非常普遍且合理的操作
 楼主| 发表于 2022-10-31 02:15 | 显示全部楼层
本帖最后由 ztwindwalker 于 2022-10-31 02:19 编辑
Phil_Libra 发表于 2022-10-31 01:29
任务管理器不已经告诉你多少物理内存在使用了,是你不信还在那脑补然后散步内存焦虑 ...


用PS打开远超64g图片,是可以几乎完全吃掉“备用/已缓存”那部分的物理内存的。这样此时任务管理器可以显示内存占用率已经超过95%,能够据此判断内存是“不够”了。
PS的软件内部有占用内存限制,最多也就拉到当前剩余值的100%。不过不影响这个测试。
然后加载完图片,截完图写帖子的时候,ps未作任何操作闲置,于是有大量内存很快地变成了“备用/已缓存”,突然空出来很多物理内存。

所以这个试验也证实了我的观点,我从来没有不信任务管理器的数值或者否认操作系统自有一套内存管理机制。比如,我闲置ps没几分钟,就有大量数据被写入虚拟内存并且把物理内存的对应部分标记成了“备用/已缓存”。我充分相信操作系统/应用软件这样是合理管理内存的。

我的问题很简单,因为无论是任务管理器还是资源监视器,现在都会把“备用/已缓存”标记为可以调用的内存,这在技术上当然没错,但是干扰了我们通过打开这些工具,简单明了地观察内存有没有占满。除法在后台挂一个这类记录工具,记录内存占用的峰值,然后才能据此确定物理内存是否曾经被占满。我因为全程观察,所以截图成功了占用峰值。

所以,如果不全程观察或者用软件生成日志(记录内存占用率峰值),而只是随手打开监视窗口看看物理内存使用率,是很难直接判断物理内存是否够用的。因为“备用”部分既可以被我们想要弄清其内存用量的前台软件占用,也可能是随时可以腾出来的其它程序占用的内存(在这个例子里,如果打开监视窗口的时候是第二张图的状态,而没有日志记录下第一张图的状态,不留心的人可能就觉得“只占了42g,64g内存完全够用”。

PS打开100g图片.png
ps加载图片后闲置一段时间.png
发表于 2022-10-31 02:24 来自手机 | 显示全部楼层
ztwindwalker 发表于 2022-10-30 17:22
所以从基本原理出发,有何可靠的第三方软件/命令行可以一锤定音地显示“当前正在运行的应用要多少物理内 ...

楼上也有人给你了 Sysinternals https://learn.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite?source=recommendations
发表于 2022-10-31 02:42 | 显示全部楼层
我不扯长篇大论,我所说自己的实际体验。

因工作关系,电脑需要 7x24,浏览器开上百个页面是经常的事情

16g 的时候,大概能撑半天,就开始卡了。但任务里看内存,也仅仅是占用少于 70%。

就因为这个百分比,那时候以为16g 是够用的,猜测是其它东西影响卡顿。

~~~~~~~~~~~~~~~~~~~~~

后来内存便宜,加到 32g,开机 2-3 天才会卡顿,也就是可持续流畅工作时间延长了

内存占用显示甚至不超过 60%,但的确还是会卡顿。重启后就恢复流畅性了。

貌似涉及内存释放的问题。
 楼主| 发表于 2022-10-30 18:53 | 显示全部楼层
本帖最后由 ztwindwalker 于 2022-10-30 20:12 编辑

简言之:你为了核实游戏中内存够不够,在窗口化模式下玩游戏并且打开任务管理器,一看内存占用率不超90%,就满意地关掉然后置之不理了,对吧?
但是如果你内存是16g,在显卡的任务管理器下,一般是正好扣掉被各种杂项实际占用的“备用”那段白块以后,有颜色的紫块占用了70%。实际在游戏中,所需要的总物理内存要看“已提交里的分子项”,分母项是当前的虚拟内存+物理内存容量之和。比如,你16g物理内存,且运行游戏的时候,占用+备用已经无限接近占满16g,“备用”被压缩到只剩3g整左右,且“已提交”显示20/48g(这里的48g是假设你虚拟内存设置成固定32g),那很可能就是内存已经不够用了。但是任务管理器里面甚至不会显示内存100%占用,而是显示占用了13g,因为“备用”的3g既腾不出来也不算占用量。
现在windows的内存管理机制,相比xp时代,已经不知道改善多少了,外加虚拟内存是固态硬盘而不是机械硬盘,就算物理内存稍微不足,有时候也只会在游戏中卡顿半秒,感知不明显;就算怀疑内存不足,然后用任务管理器查看,因为这种迷惑性的图形化和数值化显示方式,也常常产生误解。
发表于 2022-10-30 19:37 | 显示全部楼层
QQ图片20221030193710.png
这么说,我现在这样内存也不够用了哦?
 楼主| 发表于 2022-10-30 19:49 | 显示全部楼层
本帖最后由 ztwindwalker 于 2022-10-30 20:14 编辑
Roselle 发表于 2022-10-30 19:37
这么说,我现在这样内存也不够用了哦?


对的,xp时代,这样爆内存就已经卡成狗了,无论是软件还是游戏;但是现在,从人的感知角度,已经不像过去那样“爆内存了、大卡顿5秒+”了,原因上面论述过;只会时不时小幅度卡顿。
其它不会涉及人主观对于系统响应快慢、卡顿与否的应用(非实时类应用往往更吃内存),是不是能够依靠系统进步了很多的内存管理机制来避免性能下降,不是很清楚;比如你跑一些计算或者渲染,也许加内存到完全覆盖“已提交的分子项”,最后发现所需时间相差无几,也有可能。

PS:你这里使用中+备用之和确实很接近物理内存上限,但是又大于已提交的分子项,有点不太一样;如果你已提交里面显示150/245,那我基本可以说,150g里面超过128g的部分是潜在内存需求;我自己的经验是,使用中+备用正好等于16g,但是已提交有24g。
发表于 2022-10-30 20:03 来自手机 | 显示全部楼层
楼主是不是不知道“已提交”上限是你虚拟内存+物理内存之和,“已提交”的东西里不一定已经占用了你的物理内存的
发表于 2022-10-30 20:08 来自手机 | 显示全部楼层
有没有可能部分虚拟内存占用是软件自己要求的,甚至不让软件写入虚拟内存 它还会崩溃
 楼主| 发表于 2022-10-30 20:08 | 显示全部楼层
gnattu 发表于 2022-10-30 20:03
楼主是不是不知道“已提交”上限是你虚拟内存+物理内存之和,“已提交”的东西里不一定已经占用了你 ...

“已提交的分子”,怪我没一次性说清楚。上限是包含虚拟内存的。
如果分子部分就大于物理内存,说明一些本来“有希望”完全塞进物理内存的数据,被放在虚拟内存上面了。不一定就对你关注的应用而言影响性能,但是确实说明可能(大概率)有增加内存以避免蜜汁小卡顿的需要。
比如你玩游戏的时候,有些进程最初是跑去虚拟内存给游戏主进程让出内存空间了,但是回头这个后台进程,在你玩到一半的时候,又开始活动,从而需要占物理内存了,那就麻烦了。说白了,归根到底是个概率问题。
发表于 2022-10-30 20:15 | 显示全部楼层
我不看跑分。反正16G比8G速度快很多。无论苹果还是win。前两天烧包装了一台64G的上网机。发现打开网页的速度也是搜搜的。SO。。。内存大就是爽!
 楼主| 发表于 2022-10-30 20:18 | 显示全部楼层
geenii 发表于 2022-10-30 20:08
有没有可能部分虚拟内存占用是软件自己要求的,甚至不让软件写入虚拟内存 它还会崩溃 ...

这贴不讨论是不是禁用虚拟内存,win10时代和现在win11的内存管理机制,特别技术性的部分我也不懂,所以也暂时不讨论,只是说从个人经验和微软声称的信息看,确实是改进很多。

这个的主题是,由于任务管理器的“图示法”和“占用率/占用量”的数值认定具有一定的迷惑性,过去那种看看任务管理器,内存显示占用率不足90%就肯定不考虑加内存的判断方式,已经过时了。
发表于 2022-10-30 20:19 | 显示全部楼层
有没有一种可能,系统已经会根据你内存大小来优化内存占用
实际上16G还是能满足大部分家用场景,换到32G除了μtorrent挂100多个种子有次用到17G+,其他很少有超过的,使用起来和之前也没太大区别。
 楼主| 发表于 2022-10-30 20:25 | 显示全部楼层
xy. 发表于 2022-10-30 20:18
其实吧... 不一定
向 Windows 请求内存是调用 VirtualAlloc API,
根据参数有两种处理方式:

哈哈懂技术的来了~
那就干脆请教本贴主题:现在的所谓“保留”,又是什么意思呢?就是把这个显示成白色且不计算物理内存占用量,才产生了现在的迷惑性显示啊,然后我发现其实内存不够用,才试图从“已提交”的数值上做文章的。
上古时代,看任务管理器显示的内存占用量,就是简单无脑又可靠地判断内存容量够不够的办法。

另:让物理内存适当大于自己实际关切的使用场景里面的已提交的分子项(假如就是游戏和日用软件,预算上不成问题,而不是讨论要不要升级到256g这种级别),是可以保证应用程序完全物理内存充足的吧?虽然可能有一定的浪费倾向?
发表于 2022-10-30 20:26 | 显示全部楼层
习惯把虚拟内存设的比较小,一般是1024MB,再加上16G内存也就17G,平时也是后台网易云+Steam+3A大作,如果按你说的内存不够用了卡顿应该会很明显,但从来没有过,
发表于 2022-10-30 20:26 | 显示全部楼层
本帖最后由 caileipk 于 2022-10-30 20:28 编辑

红框4里的:4.8+58.9=63.7 ≈ 64G 就是你的物理内存
红框2= 红框3+你C盘下面pagefiles空间大小也就是64+9.5=73.5G(目前我的这个虚拟页面内系统自动给调整到了9.5G)
红框1是等于红框4中已使用4.8G+你目前系统和已开启程序提前占用,打比方,我今天要出门,走高速最左侧,但是因为我是老大,小弟把中间车道也调给我了。所以入口处会写着左侧和右侧临时征用,但是实际上我只开了最左车道,最通俗点讲,我可以不用,但不能没有。也叫占着茅坑不拉屎,一旦我开着开着,我开心了,我可以随时往中间车道开,这时候红框4里已使用和红框1的内存就是同时变大
你所说的要加内存??? 开玩笑么。你把交换内存(页面缓存给)给吃掉了,它能根据实际内存的使用情况,动态调整虚拟内存的大小。换句话说你的SSD硬盘怎么着也比你的内存大吧。除非你现在红框4里可用内存接近于0了。
Screenshot 2022-10-30 200756.png
 楼主| 发表于 2022-10-30 20:28 | 显示全部楼层
金牌小地主 发表于 2022-10-30 20:15
我不看跑分。反正16G比8G速度快很多。无论苹果还是win。前两天烧包装了一台64G的上网机。发现打开网页的速 ...

这肯定啊,因为8g早就是“日常闲逛论坛都不够”的内存级别了,8-16就是解决了“内存不足”到“内存充足”的瓶颈,提升是很大的。
我的强调的是,现在任务管理器显示机制跟过去不一样了,借用它来判断内存够不够,需要留意了。
 楼主| 发表于 2022-10-30 20:31 | 显示全部楼层
Phil_Libra 发表于 2022-10-30 20:19
有没有一种可能,系统已经会根据你内存大小来优化内存占用
实际上16G还是能满足大部分家用场景,换到 ...

有啊,我帖子里面也说了,包括考虑固态硬盘这些硬件技术进步在内,现在“爆内存”的体验早就不像xp时代那么糟糕了;外加任务管理器显示占用率的机制,我也一直以为“16g万岁”,游戏小卡顿就忍了,心想回头换平台才能解决了。
PS:我用来做虚拟内存的ssd其实挺一般的(浦科特m8p),看你配置,从slc到傲腾都有,虚拟内存部分性能更强,应该在内存轻微不足的情况下比我的体验还好。
发表于 2022-10-30 20:34 | 显示全部楼层
ztwindwalker 发表于 2022-10-30 20:31
有啊,我帖子里面也说了,包括考虑固态硬盘这些硬件技术进步在内,现在“爆内存”的体验早就不像xp时代那 ...

物理内存都没有用尽,怎么可能就已经爆内存了……
发表于 2022-10-30 20:37 | 显示全部楼层
ztwindwalker 发表于 2022-10-30 20:31
有啊,我帖子里面也说了,包括考虑固态硬盘这些硬件技术进步在内,现在“爆内存”的体验早就不像xp时代那 ...

有啥替代腾鳌的东西吗?
 楼主| 发表于 2022-10-30 20:38 | 显示全部楼层
caileipk 发表于 2022-10-30 20:26
红框4里的:4.8+58.9=63.7 ≈ 64G 就是你的物理内存
红框2= 红框3+你C盘下面pagefiles空间大小也就是64+9.5 ...

很简单:红框1(已提交的分子项)如果明显大于物理内存,比如是20g,但是物理内存只有16g,那么是不是总得有4g数据在虚拟内存(ssd)上面?这总比物理内存慢吧?
与其指望操作系统的调度机制100%完善,不如把内存加到完全充足,从而虚拟内存只作为防止内存容量不足的防线,而不是常态化使用并且因此拖慢响应速度、引入微卡顿的瓶颈,不是更好么?
大于红框2(已提交的分母项)而不报错,是不可能的啊。
 楼主| 发表于 2022-10-30 20:43 | 显示全部楼层
本帖最后由 ztwindwalker 于 2022-10-30 20:44 编辑
Phil_Libra 发表于 2022-10-30 20:34
物理内存都没有用尽,怎么可能就已经爆内存了……


现在的任务管理器,里面有一项,叫“备用”,你把鼠标指向下图里面白块的位置,就会弹出跟它有关的提示。这个图例上,5.7g是紫块的两部分之和,白块大概4g左右。
“使用中”的数值和百分比,都不含这个“备用”,而只包含那个紫色方块所对应的数字。使用中+备用已经占满内存的情况下(假如说是16g),按照我的经验,备用往往还有3g,这样你看任务管理器的百分比,它总是“声称”物理内存占用只有13g。我的帖子说的就是强调注意这个图示和数字上的误导性

备用,实际也占用物理内存

备用,实际也占用物理内存
发表于 2022-10-30 20:46 | 显示全部楼层
ztwindwalker 发表于 2022-10-30 20:38
很简单:红框1(已提交的分子项)如果明显大于物理内存,比如是20g,但是物理内存只有16g,那么是不是总 ...


windows的机制你永不可能做到你想要的样子,只有在Linux上才是及时释放,用多少就是多少. 在WINDOWS层怎么讨论都是无意义,你就是堆到1TB,也是无意义的,windows的初始机制就是这样子的。你放在linux上试试,8G都是很流畅的
 楼主| 发表于 2022-10-30 20:50 | 显示全部楼层
xy. 发表于 2022-10-30 20:37
之前和现在的区别就是
从 Win7 (不一定准, 印象里是)开始, 任务管理器里显示的变成物理内存的实际用量,
...

嗯,我的印象也大致往这个方向去。就是xp时代,显示内存没满,就绝对没满。我这个贴的目的就是来纠正这个远古时代的刻板印象。
而且没有这段记忆的人,也不学软件专业的,更有可能看到现在这种显示机制,就直接秉持“任务管理器没显示100%内存占用呢,内存肯定够用,怕啥”的观点啊。
你的意思,其实也可以说成“按照已提交的分子项数值来对比物理内存容量,就是梦回xp时代的任务管理器的内存占用量显示机制了”。
发表于 2022-10-30 20:52 | 显示全部楼层
本帖最后由 fyc858 于 2022-10-30 20:55 编辑

你好,16G日常确实够用,打游戏也够用,内存还没爆显存就先爆了,搞专业设计的32G有点不够,一般都推荐64G的,但就算爆了内存也问题不大,机械硬盘时代内存的速度是硬盘速度的100倍,内存爆了明显就会卡,后来到了DDR3时代,用了SATA SSD,内存速度只有硬盘速度的40倍了,还是会变卡,但不像机械硬盘这么明显了,现在用了PX5800还没换D5,内存速度也就比P5800X快10倍,就算爆了也没感觉
 楼主| 发表于 2022-10-30 20:54 | 显示全部楼层
caileipk 发表于 2022-10-30 20:46
windows的机制你永不可能做到你想要的样子,只有在Linux上才是及时释放,用多少就是多少. 在WINDOWS层怎 ...

可以类比于“安卓比Ios更浪费内存容量”的意思吧,虽然这4个操作系统的内存管理机制都不同。
windows更费内存、更不及时释放内存,那堆容量也算一个解决方案吧,尤其是ddr4,非顶级超频条,32g就比16g贵一点点了,也没必要省这个钱了。
 楼主| 发表于 2022-10-30 20:59 | 显示全部楼层
fyc858 发表于 2022-10-30 20:52
你好,16G日常确实够用,打游戏也够用,内存还没爆显存就先爆了,搞专业设计的32G有点不够,一般都推荐64G ...

我的游戏吃内存比较严重一些,策略类和模拟经营类的。
你说的那个就是我也提到的,32g无用论。但是现在很多情况下已经不成立了。
当然了,虚拟内存所在的硬盘变快了,操作系统的内存调度也改善了,导致爆内存感知不强,也确实是事实。不过现在内存也便宜不是么。
ps:ddr5很快也会降价很多的,4的非超频条已经到底了。
发表于 2022-10-30 21:05 来自手机 | 显示全部楼层
哪有那么复杂。。字面意思都能理解,已提交就是某个应用给windows提交请求的预留空间,并不是实际占用,就比如说你一个QQ占用500M,只要他开心他请求提交50G都行。。然后实际占用还是500M,他请求的再多也会被系统无视优化,丝毫对性能无任何影响。。什么"物理虚拟内存切换导致不可察觉的微小卡顿"……就纯属想象了
发表于 2022-10-30 21:11 来自手机 | 显示全部楼层
一句话,实际内存占用以任务管理器进程界面各个进程的实际占用为准就行。。这些花里胡哨的对普通人没有任何意义,只要电脑一直开着那个已提交就会越来越大,甚至你把进程都关了还能有部份未被优化的预留,就像某天QQ突然抽了给你请求100G,实际占用100M,那你还为这QQ要准备128G内存吗
 楼主| 发表于 2022-10-30 21:41 | 显示全部楼层
蛋上一道疤 发表于 2022-10-30 21:05
哪有那么复杂。。字面意思都能理解,已提交就是某个应用给windows提交请求的预留空间,并不是实际占用,就 ...

为什么很多人,包括您,都把注意力放在“已提交”上面呢?

关键词“备用”,这部分永远处于物理内存上,并且会被判定为“没占用”,从而你看任务管理器,内存永远不会显示100%、99%被占用,实际早已不够。
问题的关键在于,任务管理器会把“备用”不显示成已占用。

所以我最终从“已提交的分子项”入手,才发现内存不够用了。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2024-6-29 02:12 , Processed in 0.018799 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表