请问现在 win10 任务管理器的内存占用该怎么理解?

2021-06-03 19:25:12 +08:00
 NeezerGu

表示完全看不懂, 所有的加起来恐怕也不超过 5G,但系统内存占用超过 12G (正常办公,开的网页比较多,无其他东西)

5653 次点击
所在节点    Windows
13 条回复
NeezerGu
2021-06-03 20:19:02 +08:00
忙完关闭了一波进程, 关掉 qq 音乐的时候直接少了 5G, 估计内存泄漏了。
但为什么 qq 音乐写着 67M 我有点没懂
ysc3839
2021-06-03 20:25:25 +08:00
NeezerGu
2021-06-03 20:32:48 +08:00
@ysc3839 虚拟内存这个我懂,也能理解。这里不能理解的是:
比如从实际而言,我这里 qq 音乐占用了 5G 内存(关闭了 QQ 音乐,任务管理器里空闲内存直接多了 5G ),在第一个页面 qq 音乐占用内存才 63M 。我不认为这部分是已提交然后闲置在那里, 因为就像知乎上科普的一样,按说这样应该会写入虚拟内存。

另外,用 mac 的时候,内存占用就非常清晰,当内存不够,开始卡的时候,看一眼活动监视器,就能直接找到哪个应用的问题,win10 就不行,这点让人好蛋疼
ysc3839
2021-06-03 20:55:03 +08:00
去看了一下,任务管理器“进程”页面里的“内存”对应的是“详细信息”页面里的“private working set”。
你看到内存占用小,但实际占用大,可能是因为程序实际使用的内存都在“shared working set”里。
比如 VMware 是使用 file mapping 申请的内存,就被算在“shared working set”里了。

如果你想“内存占用就非常清晰”的话,推荐去“详细信息”页面看“Working set”这一项,不过这一项是把 private 和 shared 算在一起的,会出现重复计算的问题。
至于“进程”页面里的“内存”,似乎没有提供选项设置为“Working set”。
Suigintou
2021-06-04 02:08:49 +08:00
16G 不用看内存占用了吧,反正多开程序无压力了,不够用系统会自动调度。
NeezerGu
2021-06-04 04:17:40 +08:00
@ysc3839 非常非常非常感谢,学到了
msg7086
2021-06-04 04:35:25 +08:00
然后如果你内存用到进程被杀的话,杀进程是看 Committed 已提交内存。
比如你现在已提交内存是 17.2/31.7,那你还能用 14G 才会被杀进程。

13G 则是物理内存占用,意味着差不多有 4G 是在分页文件里。
codehz
2021-06-04 07:23:08 +08:00
(你要是觉得 windows 的这个难以看懂,那 Linux 这边会更让人吃惊,因为起码 windows 还能算准总的内存使用,linux 干脆连总总量都有多种不同口径)
前面说了,主要的问题在于多个进程之间可以有共享内存,这意味着计算的时候,有 3 种可能的思路,分别满足三种特性中的两个,即所谓不可能三角
1. 不算共享的,这就会导致直接相加后少于实际内存使用
2. 算共享的,这就会导致直接相加后多于实际内存使用
3. 算共享的,但是那部分数据除以被共享的次数,可以让加起来的总和等于实际内存使用,但是可能会出现开新进程后,单个进程显示内存使用率反而降低的反常情况
(这 3 种算法就是所谓的 USS RSS PSS )
可以看出,并不存在一种完美的算法能准确衡量单个进程的内存使用。
而之所以说 Linux 这边更复杂,则是因为 Linux 默认启用了 overcommit 特性,加了个 VSS 指标,申请的内存可以大于实际使用的。这下好了,连找到总内存利用率都变成了不可能的任务。好多人在 Linux 下试图做 fallible allocator,实际根本没用,OOM 基本都是发生在访问内存而不是分配内存的时候。
cheng6563
2021-06-04 11:32:33 +08:00
似乎默认共享的内存不会再列表显示出来。
比如 VMWare 虚拟机占得内存就是用的共享模式分配的,详情页就不会显示,可以手动调出来。
cheng6563
2021-06-04 11:33:11 +08:00
Windows 的已提交指的就是虚拟内存,没啥参考意义。
zed1018
2021-06-04 11:55:06 +08:00
试试 sysinternalsSuite 里的 rammap
DOLLOR
2021-06-04 14:05:57 +08:00
windows 是根据“已提交”来判断内存是否足够用的,而不是根据物理内存。
所以,经常看到有人抱怨,明明物理内存还很充足,为什么系统还是报“内存不足”。
那就是因为,“已提交”已经不够用了,即使物理内存还有空间,也无法再申请更多内存了。
这时候就要考虑继续加大虚拟内存的页面文件。
mmdsun
2021-06-05 13:08:16 +08:00
去详情页面看,点表格头有个选择列。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/781199

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX